我有一個大的應用程序,需要更改字體,但我不想觸摸每個標籤,文本字段等。如何訪問IB中使用的「systemFont」和[UIFont systemFontOfSize:x]
?更改控件使用的默認系統字體
我已經試過這一個:iOS 5: Curious about UIAppearance但這不是解決方案,因爲我有不同的FontSizes和Bold/Regular在我的應用程序,我不能設置它的整體。
我可以通過UIApplication或InfoPlist中的某個地方設置它嗎?
我有一個大的應用程序,需要更改字體,但我不想觸摸每個標籤,文本字段等。如何訪問IB中使用的「systemFont」和[UIFont systemFontOfSize:x]
?更改控件使用的默認系統字體
我已經試過這一個:iOS 5: Curious about 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
這將是很好,如果有一個簡單的方法來做到這一點.. –
如果這是一個一次性的事情,你只是想用不同於使用IB在應用程序界面中使用的字體,您可以嘗試手動編輯XIB,因爲它是XML ...如果您的界面在代碼中並且您想要改變「systemFontOfSize:」*的行爲*,那麼也許你可以看看方法swizzling ...我從來沒有嘗試過,但可能會有副作用... – Guillaume
不幸的是,它不是一次性的事情。 – xapslock