对于那些不知道我在说什么的人,Xcode 6.0 添加了新功能,IBDesignable 和 IBInspectable。
当您使用 IBInspectable 属性标记自定义 View 时,这些属性会显示在 IB 的属性检查器中。
同样,当您使用 IBDesignable 标记自定义 UIView 子类时,Xcode 会编译您的 View 并调用代码以在 Xcode 窗口中呈现您的 View 对象,以便您可以看到它们的外观。
将 IBDesignable 和 IBInspectable 属性添加到自定义 View 的技术在 Swift 和 Objective-C 中几乎相同。 IBInspectable 属性出现在 Interface Builder Attributes Inspector 中,无论您使用哪种语言来定义它们。
我在 Objective-C 中创建了一个 UIView 类别,在 Swift 中创建了一个 UIView 扩展,将 View 底层的 borderWidth、cornerRadius、borderColor 和 layerBackgroundColor 属性提升为 View 的属性。如果更改属性,扩展/类别会根据需要进行类型转换并将更改转发到层。
IBInspectable 部分效果很好。我看到并可以在 IB 属性检查器中设置新属性。
上周我发誓,我的 View 类别/扩展上的 IBDesignable 属性也起作用了,我可以在 IB 中看到我的自定义 UIView 类别呈现,它的图层属性发生了变化。这周它不起作用。
我是不是幻觉了?
现有系统类的类别/扩展在使用 IBDesignable 设置时能否在 Interface Builder 中绘制其自定义 UI?
最佳答案
自从发布这个问题后,我了解到@IBDesignable 不适用于类扩展。您可以添加标签,但它没有任何效果。
关于ios - 您可以使用类别/扩展将 IBDesignable 属性添加到 UIView 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906855/