我创建了UILabel的自定义子类GTLabel,以具有正确的字体,大小,颜色等。

当我以编程方式创建GTLabel时,一切正常。在IB中创建UILabel时,只需将其类更改为GTLabel即可。

现在,当我有一个带有titleLabel的UIButton时,我想将此UILabel转换为GTLabel。

我在GTLabel中创建了一个类方法:

+ (GTLabel*)labelFromLabel:(UILabel*)label
{
    ...

    return myGTLabel;
}


我真的不知道我应该如何进行这种方法。

我想像风箱一样做吗?

GTLabel *myGTLabel = [[GTLabel alloc] init];
// Get all the properties of the original label
myGTLabel.text = label.text;
myGTLabel.frame = label.frame;
// Do the modifications
myGTLabel.font = [UIFont fontWithName:@"Gotham-Light"
                                 size:label.font.pointSize];


这个想法是做类似的事情

myButton.titleLabel = [GTLabel labelFromLabel:myButton.titleLabel];


谢谢你的帮助 !

最佳答案

您可以实现自定义UIButton(例如GTButton)并重新定义titleLabel属性,并为GTLabel设置相同的属性标签

就像是:

#import "GTButton.h"

@implementation GTButton

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}


-(UILabel *)titleLabel
{
    UILabel* parentLabel = [super titleLabel];

    parentLabel.font = [UIFont fontWithName:@"Gotham-Light"
                                     size:parentLabel.font.pointSize];
    // ... set all your attributes

    return parentLabel;
}

@end

10-07 17:31