将@IBInspectable 与故事板中的任何 UIView 子类一起使用

Use @IBInspectable with any UIView subclass within storyboards

我有一个 class 与 @IBInspectable 一起使用,以获取故事板中的属性。这是其中的一小部分:

/// UIView subclass to allow creating corners, shadows, and borders in storyboards.
final class GEView: UIView {

    // MARK: - Rounded corners
    @IBInspectable
    var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = self.cornerRadius
            layer.masksToBounds = true
        }
    }

    /* ... */
}

这在我的情节提要 UIView 秒内完全正常。但是,我希望它也适用于 UIImageViewUIView 的其他子 class。这是否可以通过某种方式使它成为通用的,而无需 subclassing 我的 GEView

将您的代码移动到 UIView 的 @IBDesignable extension,如下所示:

@IBDesignable extension UIView {    
    @IBInspectable var cornerRadius: CGFloat {
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = true
        }
        get {
            return self.cornerRadius
        }
    }
}

清除 GEView 中不需要的 values/types 以前定义的变量。这是检查器中的值。

任何 UIView 的检查器中可用的属性,包括它本身。