【发布时间】:2017-01-07 16:56:58
【问题描述】:
我一直在使用 IBInspectable/IBDesignable,就像本文中一样:http://nshipster.com/ibinspectable-ibdesignable/。
它展示了如何进行扩展以在情节提要中添加额外的编辑选项。但问题是您无法在预览中看到这些更改。为此,您需要子类化,使用 IBDesignable 并执行 didset{} 的工作。
这样做的问题是您需要为每个股票创建一个子类UIView 子类。所以是UILabel、UITextField 等的子类。每次您必须复制/粘贴常规的 UIView 内容时,例如边框和圆角半径。
我不相信 Swift 支持多重继承,这会让事情变得更容易。
假设UIView 的IBDesignable 子类称为IBView。有没有办法制作例如UILabel 是 IBView 的子类而不是 UIView?
最后,我正在寻找是否有办法让IBDesignable 变得不那么乏味。
【问题讨论】:
-
据我所知,没有 IBView 这样的东西。你想为几乎所有的 UIKit 视图添加什么属性?对于大多数应用程序,您只需要子类化/扩展一小部分 UIView 子类,因为现有的 UIKit 就足够了。如果您尝试做的事情有多个项目的可重用 IBDesigner/IBInspectable 视图,请将它们放入框架目标并将它们声明为 open。 IB 处理得很好。
-
不,这是不可能的。使用组合而不是继承。例如,您可以创建一个带有圆角的
UIView子视图,如果您需要在其他任何东西上使用圆角,只需将其包裹到圆角视图中即可。 -
IBView 是我自己编造的 UIView 子类的名称,其中包含额外的 IBDesignable 内容。是的,我正在制作一个可以重复使用的文件。因此,如果没有更简单的方法,这没什么大不了的,但我只是好奇是否有。
标签: ios swift storyboard ibdesignable ibinspectable