我想为UIView制作一个@I检查表,它使UIView成为一个圆圈:
@IBInspectable var circleBorder: Bool {
set {
layer.cornerRadius = layer.frame.size.width / 2
}
get {
return layer.cornerRadius > 0 ? true : false
}
}问题是,在约束修改其值和设置错误的cornerRadius之前,调用了我的@IB了无检查表。在这里有可能得到约束后的层大小吗?
发布于 2017-05-05 11:47:53
我不认为有,但有一个更好的方法-暴露cornerRadius。
这样,开发人员就可以按照自己的顺序行事。在Bool中公开内容意味着在IB中,开发人员需要(1)创建视图,(2)添加约束,(3)更新框架,然后(4)设置Bool。(此外,在Xcode 8中,我猜如果您在IB中更改设备-即使在序列正确之后-事情可能无法正确更新。
除非您有一个特定的原因--我想不出--让它成为Bool,否则这不仅无害,而且更可定制。
守则:
@IBInspectable public var cornerRadius:CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}https://stackoverflow.com/questions/43803898
复制相似问题