我想在iOS中创建一个UIView全局扩展,以便interfacebuilder中的所有UIView都有一个运行时属性来改变颜色。我知道一个视图已经有一个属性来改变颜色,但我的名字将被称为germanyColor,只适用于德国,这就是为什么我想要创建另一个IBInspectable。
这是我的UIView扩展到目前为止它编译,因为我得到一个错误,CALayer没有颜色属性:
extension UIView {
@IBInspectable var germanyColor: CGFloat {
get {
return layer.cornerRadius //how can i get this to set a color instead ?
}
set {
layer.cornerRadius = newValue
}
}
}
我的最终目标是为interfaceBuilder中的每个UIView元素设置一个germanyColor选项。
答案 0 :(得分:1)
您的代码存在一些问题:
您无法在扩展程序中创建存储的属性,因此您必须继承UIView
以获得额外的germanyColor
属性。
UIView的layer
没有名为UIColor
的属性,因此您无法使用它 - 这就是您编码的原因所在编译(虽然它还有其他多个问题..)
正如@matt指出的那样 - 不要使用名称类型的属性调用该属性。