2014-07-23 12 views
6

parametre byRoundingCorners parametresini içeren UIBezierPath için tipik init kullanmak gibi olamaz:UIBezierPath Init() doesnt bekliyoruz byRoundingCorners parametresi

var maskPath = UIBezierPath(roundedRect: headerView.bounds, byRoundingCorners: (UIRectCorner.TopLeft | UIRectCorner.TopRight), cornerRadii: 5.0) 

hata

"çağrısında Ekstra argüman 'byRoundingCorners" verir

Bu bir Swift hatası mı?

cevap

20

Hata mesajı oldukça yanıltıcı olduğu için bir Swift hatasıdır. Gerçek hata, cornerRadii parametresinin CGSize, türüne sahip olması, ancak bir kayan nokta sayısı geçirmenizdir (Why is cornerRadii parameter of CGSize type in -[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]? ile karşılaştır).

Bu (Swift 1.2) çalışması gerekir: Swift 2'de byRoundingCorners bağımsız değişken türü OptionSetType değiştirilmiş olması

var maskPath = UIBezierPath(roundedRect: headerView.bounds, 
      byRoundingCorners: .TopLeft | .TopRight, 
      cornerRadii: CGSize(width: 5.0, height: 5.0)) 

Not:

var maskPath = UIBezierPath(roundedRect: headerView.bounds, 
      byRoundingCorners: [.TopLeft, .TopRight], 
      cornerRadii: CGSize(width: 5.0, height: 5.0)) 
+1

Bu hızlı 2 için iyi bir çözümdür. Onu bulana kadar çok araştırdım. Günümü kurtardın. Çok teşekkürler. – Tibor

İlgili konular