因此,我尝试将 UIButton
上的 UILabel
更改为 FXLabel
的实例。查看有关 FXLabel
( https://github.com/nicklockwood/FXLabel ) 的更多信息的链接。我知道通过使用类扩展 ( Subclass UIButton to add a property ),我总是可以添加另一个属性,在我的例子中,一个 FXLabel
基本上只需添加一个 subview 。但是,我喜欢已经存在的 titleLabel
属性的便利性和特性。
是否有一些方法可以按子类或类别“切换”UILabel
到 FXLabel
?
我确实知道我可以做到这一点,但它是一种黑客攻击,并且不是 future 的证明。而且我不知道如何更改类类型 ( Get UILabel out of UIButton )。
UILabel *label;
for (NSObject *view in button.subviews) {
if ([view isKindOfClass:[UILabel class]]) {
label = (UILabel *)view;
break;
}
}
思想??谢谢。
最佳答案
这是您至少可以访问标签的另一种方式。创建 UIButton
的子类,并在该子类中覆盖 layoutSubviews
。从那里您可以直接访问标签:
- (void)layoutSubviews {
[super layoutSubviews];
UILabel *titleLabel = [self titleLabel];
}
现在我们仍然遇到将标签更改为子类的问题。我想您可以尝试将 UILabel
的类与您的 FXLabel
子类动态交换(详见 here ),但老实说这是相当冒险的。
我会说你最好只创建自己的 UIControl
,你可以根据自己的喜好进行自定义。没有风险,只有纯粹的善良。模仿一个简单的 UIButton
应该不会太难。祝你好运!
关于iphone - 我可以用 FXLabel *替换* UIButton 上的 UILabel 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586125/