似乎无法使用包含参数byRoundingCorners参数的UIBezierPath的典型初始化:

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

给出错误“调用中的额外参数'byRoundingCorners”

这是Swift的错误吗?

最佳答案

就错误消息而言,这是一个Swift错误。
真正的错误是cornerRadii参数的类型为CGSize
但您传递的是浮点数(比较Why is cornerRadii parameter of CGSize type in -[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:]?)。

这应该工作(Swift 1.2):

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

请注意,在Swift 2中,byRoundingCorners参数的类型已更改为OptionSetType:
var maskPath = UIBezierPath(roundedRect: headerView.bounds,
            byRoundingCorners: [.TopLeft, .TopRight],
            cornerRadii: CGSize(width: 5.0, height: 5.0))

10-04 15:50