我有一个很大的应用程序,需要更改字体,但我不想触摸每个标签、文本字段等。如何访问 IB 和 in 中使用的“systemFont” [UIFont systemFontOfSize:x]
?
我已经尝试过这个:iOS 5:对 UIAppearance 感到好奇,但这不是解决方案,因为我的应用程序有不同的 FontSizes 和 Bold/Regular,我无法对其进行整体设置。
我可以通过 UIApplication 或 InfoPlist 中的某处设置它吗?
我有一个很大的应用程序,需要更改字体,但我不想触摸每个标签、文本字段等。如何访问 IB 和 in 中使用的“systemFont” [UIFont systemFontOfSize:x]
?
我已经尝试过这个:iOS 5:对 UIAppearance 感到好奇,但这不是解决方案,因为我的应用程序有不同的 FontSizes 和 Bold/Regular,我无法对其进行整体设置。
我可以通过 UIApplication 或 InfoPlist 中的某处设置它吗?
您可以为 UILabel、UITextField 和 UIButton 创建类别,并且可以在“awakeFromNib”方法中,您可以将字体名称更改为新字体并且可以保持相同的大小。我在下面添加了 UILabel 类别的代码。您可以对 UITextField 和 UIButton 执行相同的操作。
@implementation UILabel (CustomFontLabel)
-(void)awakeFromNib{
[super awakeFromNib];
float size = [self.font pointSize];
NSString *stringfontstyle=self.font.fontName;
if([stringfontstyle rangeOfString:@"Bold"].location != NSNotFound) {
self.font = [UIFont fontWithName:@"MyCustomFont-Bold" size:size];
}
else if ([stringfontstyle rangeOfString:@"Italic"].location != NSNotFound) {
self.font = [UIFont fontWithName:@"MyCustomFont-Italic" size:size];
}
else if ([stringfontstyle rangeOfString:@"Medium"].location != NSNotFound) {
self.font = [UIFont fontWithName:@"MyCustomFont-Medium" size:size];
}
else {
self.font = [UIFont fontWithName:@"MyCustomFont" size:size];
}
}
@end
实际上,Paramasivan 的回答只是部分正确。问题是,例如,如果UILabel
要实现awakeFromNib
它,它将永远不会被调用。您的类别将覆盖此方法。您可以调整或覆盖它,如下所示:
http://www.mikeash.com/pyblog/friday-qa-2010-01-29-method-replacement-for-fun-and-profit.html