在Swift中为什么这样做有效?
let button = UIButton()
button.layer.maskedCorners = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
这不是吗?
let corners : [CACornerMask] = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
let button = UIButton()
button.layer.maskedCorners = corners
I.E。明确地为maskedCorners
分配数组是好的,但不能给数组变量赋值。
错误是:
无法将类型“ [CACornerMask]”的值分配给类型“ CACornerMask” button.layer.maskedCorners =角点
答案 0 :(得分:2)
您的corners
常量类型错误。 [CACornerMask]
使其为CACornerMask
的数组。您希望输入CACornerMask
。声明为NS_OPTIONS类型,该类型将映射到Swift选项集。
代码[.layerMinXMaxYCorner, .layerMinXMinYCorner]
看起来像数组语法,但不是。它是语义糖,可以让您在C标志变量中指定不同的位掩码(这是Swift选项集所映射到的变量)。
引用Apple的文档:“ Swift还将导入标有NS_OPTIONS宏的C枚举作为Swift选项集”
摘录自:苹果公司。“将Swift与Cocoa和Objective-C结合使用(Swift 4 beta)。” iBooks。
答案 1 :(得分:0)
您应该尝试
let corners : CACornerMask = [.layerMinXMaxYCorner, .layerMinXMinYCorner]
let button = UIButton()
button.layer.maskedCorners = corners
您将错误的类型分配给所需的类型