swift中@IBInspectable和@IBDesignable的使用

主要作用可以将自定义的代码实时渲染到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 {
}

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


swift中@IBInspectable和@IBDesignable的使用_第1张图片
自定义属性.png

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


效果展示.gif

你可能感兴趣的:(swift中@IBInspectable和@IBDesignable的使用)