我有一个很大的应用程序,需要更改字体,但我不想触摸每个标签,文本字段等。如何访问IB和[UIFont systemFontOfSize:x]
中使用的“systemFont”?
我已经尝试过这个:iOS 5: Curious about UIAppearance但这不是解决方案,因为我的应用程序中有不同的FontSizes和Bold / Regular,我无法将其整体设置。
我可以通过UIApplication或InfoPlist中的某个地方设置它吗?
答案 0 :(得分:5)
您可以为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
答案 1 :(得分:2)
实际上,Paramasivan的回答只是部分正确。问题是如果例如UILabel
要实现awakeFromNib
,它将永远不会被调用。您的类别将覆盖此方法。您可以调整或覆盖它,如下所示:
http://www.mikeash.com/pyblog/friday-qa-2010-01-29-method-replacement-for-fun-and-profit.html