以编程方式将所有UILabel设置为子类

时间:2017-09-03 15:11:50

标签: ios objective-c cocoa-touch subclassing

在我想要子类化的项目中,我有许多现有的UILabels。在IB中将它们设置为我的UILabel子类,而不是花费几天时间将它们单独设置为想要以编程方式设置它们

点击此处: How to programmatically set custom class?

猜测了几个:UILabel_setClass(self.contentView, [MyLabel class]); - 隐式声明错误

        Class  lbl = [[MyLabel alloc] init];

        for (id view in [self.contentView subviews]) {
            if ([view isKindOfClass:[UILabel class]]) {

                 //....sub it here?

                 }
        }

1 个答案:

答案 0 :(得分:-1)

首先,更改对象类是非常糟糕的主意。这是一种嗅觉代码。如果将来新开发人员将使用默认的UILabel类,则会出现奇怪的错误。运行时 - 是Objective-C的一个伟大而最糟糕的特性。它可以在坏人手中创建隐藏的错误。所以要非常仔细地使用它并两次思考 - 你真的需要它在项目中。更好 - 明确编写代码,使用设计模式等。

在您的问题中不清楚为什么需要更改对象类。如果您需要更改外观 - 请使用UIAppearance。如果您需要扩展功能,请使用Extensions