如何在代码中创建自定义 UIButton 并在 xib 中使用它?
Posted
技术标签:
【中文标题】如何在代码中创建自定义 UIButton 并在 xib 中使用它?【英文标题】:How to create a custom UIButton in code and use it in a xib? 【发布时间】:2014-03-26 00:31:44 【问题描述】:我有一个继承自 UIButton 的类 MyButton : UIButton
。我在 MyButton 的 initWithFrame (唯一的构造函数)中做了很多事情,比如设置背景颜色。
现在我想在我的 xib 中使用这个 MyButton。这样我就不会一次又一次地为我的所有按钮设置这些属性。我还在 xib 中的按钮的身份检查器中将自定义类设置为 MyButton。
没有任何东西仍然反映我在 xib 中设置的属性。如果它在代码中,这可以很容易地完成。
我的问题是, 1) 当您通过 xib 创建按钮时会调用什么(就像您在以编程方式创建按钮时调用 initWithFrame 一样)?
2) 如何查看我在 MyButton 中设置的属性?离开xib并以编程方式进行是唯一的方法吗?
提前致谢!
【问题讨论】:
【参考方案1】:-
通常使用
initWithCoder:
您可以使用 Interface Builder 中的身份检查器通过属性的键路径设置值。在此示例中,您可以更改视图的 CALayer
属性:
【讨论】:
对于第 2 点,我将不得不继续为我创建的每个 MyButton 做。这破坏了拥有自定义控件的意义。 顺便说一句,您的 initWithCoder 评论很有帮助。我可以在那里定义属性!谢谢 !!标记为答案 还有一件事 - initWithCoder 不会获取 Key Path 中定义的值。不过,这些值确实会在 AwakeFromNib 中获得。【参考方案2】:您可以简单地在您的xib
文件中设置它。为此:
-
选择
xib
文件中的按钮。
单击身份检查器按钮。
在“类”字段中输入您的自定义类的名称(MyButton
用于您的案例)。
现在您的按钮将使用 Type MyButton
类。
编辑
检查Apple's documentation on Adding a Custom Object。这会给你更多的想法。
【讨论】:
正如我所说,它不会获取我在基类中设置的属性。我想使用 MyButton 自定义控件,它具有直接从 Xib 设置的一些属性。以上是关于如何在代码中创建自定义 UIButton 并在 xib 中使用它?的主要内容,如果未能解决你的问题,请参考以下文章
使用 6 行 7 列的 Uibutton 数组在 iphone 中创建自定义日历