drawRect()之后的内容

时间:2015-03-25 11:43:25

标签: ios swift

我想知道在调用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
    }

}

1 个答案:

答案 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中显示时运行代码。