Iphone 我可以用FXLabel*替换UIButton上的UILabel吗?

Iphone 我可以用FXLabel*替换UIButton上的UILabel吗?,iphone,objective-c,ios,uibutton,uilabel,Iphone,Objective C,Ios,Uibutton,Uilabel,因此,我试图将ui按钮上的UILabel改为FXLabel的实例。有关FXLabel()的更多信息,请查看链接。我知道通过使用class extensions(),我总是可以添加另一个属性,在我的例子中,只需添加一个子视图,就可以添加一个FXLabel。但是,我喜欢已有的标题标签属性的便利性和特性 对于FXLabel,是否有某种方法可以按子类或类别“切换”该UILabel 我知道我可以做到,但这是一个黑客,不是未来的证明。我不知道如何更改类类型() 想法??谢谢。很抱歉这么说,但我认为你不能以任

因此,我试图将
ui按钮上的
UILabel
改为
FXLabel
的实例。有关
FXLabel
()的更多信息,请查看链接。我知道通过使用class extensions(),我总是可以添加另一个属性,在我的例子中,只需添加一个子视图,就可以添加一个
FXLabel
。但是,我喜欢已有的
标题标签
属性的便利性和特性

对于
FXLabel
,是否有某种方法可以按子类或类别“切换”该
UILabel

我知道我可以做到,但这是一个黑客,不是未来的证明。我不知道如何更改类类型()


想法??谢谢。

很抱歉这么说,但我认为你不能以任何可靠的方式做到这一点。即使将
UIButton
子类化并覆盖
titleLabel
方法,也必须处理状态设置。你永远不知道内部代码何时直接指向标签的私有ivar


我为我的应用程序创建了UIButton的子类,以执行类似的操作(自定义按钮布局和子视图),很抱歉,我现在无法共享它,它属于客户端。为自己的子视图创建自己的状态处理代码并不太困难。

以下是至少可以访问标签的另一种方法。创建
UIButton
的子类,并在该子类中覆盖
layoutSubviews
。从那里,您可以直接访问标签:

- (void)layoutSubviews {
    [super layoutSubviews];

    UILabel *titleLabel = [self titleLabel];
}
现在,我们仍然面临将标签更改为子类的问题。我想您可以尝试动态地将
UILabel
的类与
FXLabel
子类交换(详细说明),但老实说,这是相当危险的


我想说,您最好只创建自己的
UIControl
,您可以根据自己的内容进行自定义。没有风险,只是纯粹的善良。模仿一个简单的
ui按钮应该不会太难。祝你好运

谢谢你的提示。我想我将尝试创建自己的自定义类。如果没有人能给我更好的答案,我会把这个标记为回答我的问题。谢谢我只是入侵了它,并在按钮顶部添加了标签,而没有在按钮上设置文本。现在我必须跟踪alpha更改等的两个属性,但这比尝试创建自己的UIControl容易得多。我以后会努力的,看看能不能得到什么帮助。我来看看我能拼凑些什么。
- (void)layoutSubviews {
    [super layoutSubviews];

    UILabel *titleLabel = [self titleLabel];
}