簡體   English   中英

更改控件使用的默認systemFont

[英]Change the default systemFont used by controls

我有一個很大的應用程序,需要更改字體,但是我不想觸摸每個標簽,文本字段等。 如何訪問IB和[UIFont systemFontOfSize:x]使用的“ [UIFont systemFontOfSize:x]

我已經嘗試過這一方法: iOS 5:對UIAppearance感到好奇,但這不是解決方案,因為我的App上都有不同的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM