ios - 您可以使用类别/扩展将 IBDesignable 属性添加到 UIView 吗?

标签 ios interface-builder xcode-storyboard ibdesignable ibinspectable

对于那些不知道我在说什么的人,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/

相关文章:

ios - AVAudioPlayer iOS 错误

ios - 如何禁用自定义按钮上的 iOS 默认光泽效果

iphone - 创建 iPhone UI 元素

ios - Storyboard编辑器中的内容消失了

ios - 从嵌入在容器 View 中的 View Controller 继续

ios - 无法从 Storyboard 中的 UITapGestureRecognizer 拖动 IBAction

c# - UITableViewDelegate 中删除单元格时发生 NSInternalInconsistencyException 错误/Xamarin.iOS

iphone - 在不使用 Interface Builder 的情况下指定 CocoaTouch 控件坐标和大小

ios - 向 Xcode Interface Builder 添加自定义调色板

objective-c - 如何复制包含 Storyboard的 iOS 5.1 应用程序