我想知道在调用UIView的drawRect()之后如何执行代码?
iOS渲染周期中是否有afterdrawRect Hook / Method?
为什么呢? 我想在InterfaceBuilder中显示一个Button(通过IBDesignable),但将其隐藏在最终产品中。
@IBDesignable class FakeUIButton: UIButton {
@IBInspectable var fillColor: UIColor = UIColor.purpleColor() {
didSet {
layer.backgroundColor = fillColor.CGColor
self.alpha = 0.5
}
}
override func drawRect(rect: CGRect) {
layer.backgroundColor = fillColor.CGColor
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func layoutSubviews() {
super.layoutSubviews()
self.backgroundColor = UIColor.clearColor() // called to late in render cycle
}
}
答案 0 :(得分:0)
您可以使用
prepareForInterfaceBuilder()
要准备您在IB中显示的视图,其中的代码将不会在应用程序本身中运行。 或者你可以使用
#if !TARGET_INTERFACE_BUILDER
// this code will run in the app itself
#else
// this code will execute only in IB
#endif
仅在IB中显示时运行代码。