2013-08-12 26 views
8

私はすべての標準コントロールがシステムフォントをデフォルトで使用していることを理解しています。アプリケーションのデフォルトフォントを変更する方法はありますか

また、API [UIFont systemFontOfSize:]もシステムフォントを使用します。

テーブル、ラベルなどのフォントを設定する代わりに、アプリケーション全体で再定義する方法はありますか?

+1

あなたはUIFontのカテゴリを作ってみましたか? – NeverBe

+0

変更してもよろしいですか?これは、邪魔なインターフェースが生まれる方法です。 – Dave

+0

@Dave:はい。私はそれを変更したいと確信しています:) –

答えて

8

答えはいいえ、あなたはアップルのsystemFontを変更することはできません、自分でコントロールのフォントを設定する必要があります。全体のiOSアプリのデフォルトフォントを設定するための最良の方法については

、質問SO下記をご確認ください。

Set a default font for whole iOS app?

How to set a custom font for entire iOS app without specifying size

How do I set a custom font for the whole application?

Is there a simple way to set a default font for the whole app?

5

定義し、エクスポート(ファイルにヘッダーを含めるか、またはプリコンパイルLEDヘッダ)は、次のようUIFontのカテゴリ:

@implementation UIFont (Utils) 

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation" 

+ (UIFont *)systemFontOfSize:(CGFloat)size 
{ 
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size]; 
} 

+ (UIFont *)lightSystemFontOfSize:(CGFloat)size 
{ 
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size]; 
} 

+ (UIFont *)boldSystemFontOfSize:(CGFloat)size 
{ 
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size]; 
} 

+ (UIFont *)preferredFontForTextStyle:(NSString *)style 
{ 
    if ([style isEqualToString:UIFontTextStyleBody]) 
     return [UIFont systemFontOfSize:17]; 
    if ([style isEqualToString:UIFontTextStyleHeadline]) 
     return [UIFont boldSystemFontOfSize:17]; 
    if ([style isEqualToString:UIFontTextStyleSubheadline]) 
     return [UIFont systemFontOfSize:15]; 
    if ([style isEqualToString:UIFontTextStyleFootnote]) 
     return [UIFont systemFontOfSize:13]; 
    if ([style isEqualToString:UIFontTextStyleCaption1]) 
     return [UIFont systemFontOfSize:12]; 
    if ([style isEqualToString:UIFontTextStyleCaption2]) 
     return [UIFont systemFontOfSize:11]; 
    return [UIFont systemFontOfSize:17]; 
} 

#pragma clang diagnostic pop 

@end 

ライトバリアントは、iOSの7楽しんで始まる便利なエクストラとして登場! ;)

+2

これは良い考えではありません。 – orj

+0

@orjなぜこれは良い考えではありませんか?これはドキュメント化されていないAPIを使用しているようではありません。またはそれは ? –

+2

これは、UIKitでこれらのメソッドの標準実装をオーバーロードします。これは完全に推奨されていません。 f.e. iOS 9には、要求されたフォントサイズに応じて、サンフランシスコの_Display_と_Text_バリアントの間でシステムフォントを適応的に切り替える機能があります。私はまだこのテクニックを見つけました**安全**しかし、あなたがタイポグラフィアプリケーションを書いているか、またはいくつかのフォントエキストラが必要な場合を除き、これは非常に決定論的な方法でデフォルトのアプリケーションフォントを切り替えるための非常に簡単で迅速な方法です。 – michi

関連する問題