我已经创建了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];
感谢您的帮助!
答案 0 :(得分:3)
您可以实现自定义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
答案 1 :(得分:1)
titleLabel 方法是只读的。
虽然此属性是只读的,但它自己的属性是可读/写的。主要使用这些属性来配置按钮的文本。
例如:
UIButton *button = [UIButton buttonWithType: UIButtonTypeSystem];
button.titleLabel.font = [UIFont systemFontOfSize: 12];
button.titleLabel.lineBreakMode = UILineBreakModeTailTruncation;
在为其中的label和set属性创建时为UIButton创建自定义类。