2014-07-23 19 views
6

thể dường như không sử dụng init điển hình cho UIBezierPath chứa byRoundingCorners tham số tham số:UIBezierPath Init() doesnt mong đợi tham số byRoundingCorners

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

Cung cấp cho các lỗi "Extra luận 'byRoundingCorners trong cuộc gọi"

Đây có phải là lỗi Swift không?

Trả lời

20

Đây là lỗi Swift cho đến nay vì thông báo lỗi khá gây hiểu nhầm. Lỗi thực sự là thông số cornerRadii có loại CGSize, nhưng bạn đang chuyển một số dấu phẩy động (so sánh Why is cornerRadii parameter of CGSize type in -[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]?).

này nên làm việc (Swift 1.2):

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

Lưu ý rằng trong Swift 2, loại lập luận byRoundingCorners đã được đổi thành OptionSetType:

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

Đây là câu trả lời tốt cho mau lẹ 2. Tôi đã tìm kiếm rất nhiều cho đến khi tôi tìm thấy nó. Bạn đã cứu ngày của tôi. Cảm ơn nhiều. – Tibor

Các vấn đề liên quan