【发布时间】:2012-10-12 02:12:57
【问题描述】:
自定义UIView最大的问题是我们在XIB中看到的只是一个白色的矩形。
我们根本无法自定义某些属性。例如,如果我们的自定义 subView 有一个标签,那么能够直接在 XIB 中为该标签设置文本就很好了。
类似于 UIButton 的功能。
这真的可行吗?
XIB设计是否只是捷径,真正的代码在代码中?
【问题讨论】:
标签: objective-c xcode uiview custom-controls xib
自定义UIView最大的问题是我们在XIB中看到的只是一个白色的矩形。
我们根本无法自定义某些属性。例如,如果我们的自定义 subView 有一个标签,那么能够直接在 XIB 中为该标签设置文本就很好了。
类似于 UIButton 的功能。
这真的可行吗?
XIB设计是否只是捷径,真正的代码在代码中?
【问题讨论】:
标签: objective-c xcode uiview custom-controls xib
不幸的是,没有真正的方法可以在 Interface Builder“属性检查器”面板(您捕获的那个)中添加条目以允许您像对内置 Cocoa 类所做的那样自定义值。
(确切地说,一些博客解释了一些将旧的 Xcode3 插件(在 Xcode3 中能够做到这一点)转换为 Xcode4 插件的方法,但这没有正式记录,而且设置需求非常复杂一个专门的 Xcode 项目,只是为了创建您的自定义视图,声明其 IB 调色板,编写一些关联代码并将其嵌入到 xcode 插件中......)
但是,您仍然有一种可能性,即使不是很方便,也可以直接在 Interface Builder 中自定义 XIB 中任何对象的任何属性,而不是通过代码来实现。
只需进入“Identity Inspector”(属性检查器之前的选项卡,Cmd-Alt-3)并使用“用户定义的运行时属性”表来填写名称/密钥路径您要更改的属性并指明它们的值。
然而,在实践中,我很少看到它在我使用的 XIB 文件中使用,因为它不如专用的“属性检查器”调色板好,而且您必须键入 准确 名称表中的属性,以便您可以影响它的值:没有为您构建的可修改属性列表,面板中有漂亮的文本字段和复选框来帮助您……但它仍然像魅力一样工作!
请随时向 Apple 发送请求(使用他们的反馈工具)以请求此功能,因为您不是第一个希望实现此功能的人,也不会是最后一个请求此功能的人,所以也许希望 Apple 会收到足够多的请求,并且他们会实施它……
【讨论】:
OHAttributedLabel 类(custom class of mine),它是 UILabel 的子类,我在其中添加了一些属性,包括 @property(retain) UIColor* linkColor。在“用户定义的运行时属性”中配置linkColor 属性值(如在捕获中一样)使得该值在XIB 实例化对象时设置,因此该值在它为@987654327 时设置@方法被调用。
@property UILabel* titleLabel,您可以在“用户定义的运行时属性”表的“keyPath”列中输入titleLabel.textColor 或titleLabel.numberOfLines 甚至titleLabel.layer.borderWidth 和titleLabel.layer.borderColor...,并为每一个指定相应的值!
是的,这是可能的。
首先,在您的自定义视图中添加以下属性(假设您使用 ARC 功能):
@property(nonatomic, strong) IBOutlet UILabel myLabel;
现在,在您的 xib 中,确保主视图是您的自定义视图。 在视图中所需的位置添加标签。 单击自定义视图,然后使用连接检查器将标签链接到 myLabel。
【讨论】:
情节提要/笔尖显示了代码运行之前界面的外观。如果你想在故事板中看到它,你必须在故事板中构建它。如果您有自定义对象,故事板中有一个基本对象可用作占位符,但它不会显示代码中加载的内容。
【讨论】: