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

Dyl*_*tey 8 iphone objective-c uibutton uilabel ios

所以,我正在尝试将a更改为UILabela UIButton的实例FXLabel.有关更多信息,请访问该链接FXLabel(https://github.com/nicklockwood/FXLabel).我知道通过使用类扩展(Subclass UIButton来添加属性),我总是可以添加另一个属性,在我的情况下,FXLabel只是添加一个子视图.但是,我喜欢titleLabel已经出现的物业的便利性和特色.

有一些方法来"开关"的UILabel一个FXLabel由子类或类别?

我知道我可以做到这一点,但这是一个黑客,并不是未来的证据.而且我不知道如何更改类类型(从UIButton中取出UILabel).

UILabel *label;
for (NSObject *view in button.subviews) {
    if ([view isKindOfClass:[UILabel class]]) {
        label = (UILabel *)view;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

思考?谢谢.

sud*_*-rf 5

这是你至少可以访问标签的另一种方式.创建子类UIButton,并在子类覆盖中layoutSubviews.从那里你可以直接访问标签:

- (void)layoutSubviews {
    [super layoutSubviews];

    UILabel *titleLabel = [self titleLabel];
}
Run Code Online (Sandbox Code Playgroud)

现在我们仍然坚持将标签更改为子类的问题.我想你可以尝试动态地将UILabel你的类与你的FXLabel子类交换(详见这里),但老实说这很冒险.

我会说你最好只创造自己的UIControl,你可以根据自己的心灵内容进行自定义.没有风险,只有纯粹的善良.模仿一个简单的东西应该不难UIButton.祝好运!