2014-07-23 8 views
6

nie wydają się korzystać z typową dla Init UIBezierPath który zawiera parametr byRoundingCorners parametr:UIBezierPath Init() robi oczekiwać parametr byRoundingCorners

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

daje błąd "dodatkowy argument„byRoundingCorners w call"

Czy to jest błąd Swift?

Odpowiedz

20

Jest to błąd Swift, o ile komunikat o błędzie jest dość mylący. Prawdziwy błąd polega na tym, że parametr cornerRadii ma typ CGSize, , ale podajesz liczbę zmiennoprzecinkową (porównaj Why is cornerRadii parameter of CGSize type in -[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]?).

To powinno działać (SWIFT 1.2):

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

pamiętać, że w Swift 2, rodzaj byRoundingCorners argumentu została zmieniona na OptionSetType:

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

jest to dobra odpowiedź na Swift 2. Szukałem dużo, dopóki go nie znalazłem. Uratowałeś mi dzień. Wielkie dzięki. – Tibor