iOS 中 @IBDesignable和@IBInspectable

主要作用可以将自定义的代码实时渲染到Interface Builder中。而它们之间的桥梁就是通过两个指令来完成,即@IBDesignable和@IBInspectable。我们通过@IBDesignable告诉Interface Builder这个类可以实时渲染到界面中,但是这个类必须是UIView或者NSView的子类。通过@IBInspectable可以定义动态属性,即可在attribute inspector面板中可视化修改属性值。
以修改view的圆角、线宽、线宽颜色代码示例:

// 给uivew写一个扩展,定义三个属性、

extension UIView {
    @IBInspectable var cornerRadius: CGFloat {
        get {
            return self.layer.cornerRadius
        }
        set {
            self.layer.cornerRadius = newValue
            self.layer.masksToBounds = newValue > 0
        }
    }
    
    @IBInspectable var borderWidth: CGFloat {
        get {
            return self.layer.borderWidth
        }
        set {
            self.layer.borderWidth = newValue
        }
    }
    
    @IBInspectable var borderColor: UIColor {
        get {
            return UIColor(cgColor: self.layer.borderColor!)
        }
        set {
            self.layer.borderColor = newValue.cgColor
        }
    }
}

// 自定义view,用@IBDesignable修饰
@IBDesignable class MyView: UIView {
}

完成以上代码后,在面板中可以看到我们自定义的三个属性

调节属性内的参数,可在xib中查看对应的效果

作者:陈水寒
链接:https://www.jianshu.com/p/6028c822700a
来源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处

你可能感兴趣的:(iOS 中 @IBDesignable和@IBInspectable)