如何在代码中创建自定义 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 中创建自定义日历

如何在 Libra 测试网中创建自定义代币?

如何在 TypeScript 中创建自定义类型

如何在 IdentityServer4 中创建自定义授权类型

在 Python 中创建自定义 Spark RDD

如何在 log4j2 中创建自定义 Appender?