由于似乎无法通过Interface Builder应用自定义字体,我尝试定义一个新的UILabel派生类,并在其 - (id)init方法中设置我想要使用的自定义字体:这不会导致预期的结果,因为在运行时使用的字体似乎仍然是'Helvetica'(我的自定义字体是'非洲',如果通过代码设置它可以工作)。
这是我的UILabel派生代码段:
- (id)init {
UIFont *font = [UIFont fontWithName:@"african" size:10];
[self setFont:font];
return self;
}
因此,我正在通过代码强制字体来解决问题:
NSLog(@"Before FONT NAME IS ------------> %@", myLabel.font.fontName);
UIFont *font = [UIFont fontWithName:@"african" size:10];
[myLabel setFont:font];
myLabel.text = @"HELLO!";
NSLog(@"After FONT NAME IS ------------> %@", myLabel.font.fontName);
打印输出如下:
Before FONT NAME IS ------------> Helvetica
After FONT NAME IS ------------> African
似乎我在init方法中设置的默认字体被覆盖:我应该在哪里设置它?
答案 0 :(得分:1)
如果您使用init函数,那么“self”将没有任何值...所有init函数必须看起来像这样
- (id)init {
self = [super init];
if (self) {
// Your init code here
}
return self;
}
此外,请确保您也将覆盖“initWithFrame:”,如果您想从IB中使用它,也可以“initWithCoder:”。