2

私は大きなアプリを持っていて、フォントを変更する必要がありますが、すべてのラベル、テキストフィールドなどに触れたくありません。IB および で使用されている「systemFont」にアクセスするにはどうすればよい[UIFont systemFontOfSize:x]ですか?

私はすでにこれを試しました: iOS 5: UIAppearance に興味がありますが、それは解決策ではありません。アプリ全体で異なる FontSizes と Bold/Regular があり、全体的に設定できないからです。

UIApplication または InfoPlist のどこかで設定できますか?

4

2 に答える 2

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
于 2012-12-10T09:52:12.320 に答える
2

実際、Paramasivan の回答は部分的にしか正しくありません。問題は、たとえばUILabel実装awakeFromNibした場合、呼び出されないことです。あなたのカテゴリはこのメソッドをオーバーライドします。次に示すように、スウィズルまたはオーバーライドすることができます。

http://www.mikeash.com/pyblog/friday-qa-2010-01-29-method-replacement-for-fun-and-profit.html

于 2013-06-28T00:42:56.707 に答える