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

标签 iphone objective-c ios uibutton uilabel

因此,我尝试将 UIButton 上的 UILabel 更改为 FXLabel 的实例。查看有关 FXLabel ( https://github.com/nicklockwood/FXLabel ) 的更多信息的链接。我知道通过使用类扩展 ( Subclass UIButton to add a property ),我总是可以添加另一个属性,在我的例子中,一个 FXLabel 基本上只需添加一个 subview 。但是,我喜欢已经存在的 titleLabel 属性的便利性和特性。

是否有一些方法可以按子类或类别“切换”UILabelFXLabel

我确实知道我可以做到这一点,但它是一种黑客攻击,并且不是 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/

相关文章:

iphone - 节目收到信号SIGABRT

ios - 关于 SQL 和 Swift 的建议和信息

Iphone/Ipad 谷歌地图 Iframe 嵌入

iphone - 从一个 UIViewController 管理多个 UIView

iphone - 创建一个从 iphone 屏幕创建视频并从耳机/音频输入添加音频的应用程序

iphone - 我想用另一种颜色交换图像中的特定颜色。有什么可行的办法吗?

ios - 自动布局的 ScrollView

objective-c - 使用 NSScreens 时如何在全局坐标和局部坐标之间进行转换?

ios - 在 obj-C 中调用转换对象的方法

ios - 防止 UIWebView 中烦人的 HTML5 地理定位警报