サーチ…


カスタムフォントの埋め込み

カスタムフォントのサポート
カスタムフォントを使用するアプリケーションでは、アプリケーションバンドルにこれらのフォントを組み込み、Info.plistファイルにUIAppFontsキーを含めることで、これらのフォントをシステムに登録できます。このキーの値は、アプリケーションのバンドル内のフォントファイルを識別する文字列の配列です。システムがキーを見ると、指定されたフォントが読み込まれ、アプリケーションで使用できるようになります。

Info.plistでフォントを設定したら、カスタムフォントをIBの他のフォントやプログラムで使用することができます。

  1. フォントを「Xcode Supporting Files」フォルダにドラッグアンドドロップします。あなたのアプリを「ターゲットに追加」セクションにマークすることを忘れないでください。この瞬間から、このフォントをIBで使用してフォントパレットから選択することができます。

ここに画像の説明を入力

  1. このフォントをデバイスで使用できるようにするには、 Info.plistを開きFonts provided by application key (UIAppFonts)でFonts provided by application keyを追加Fonts provided by application key 。項目0キーの値としてフォント名を追加します。注意:フォント名は、フォントファイル名と異なる場合があります。 ここに画像の説明を入力
  1. 以下のスニペットを使用して、カスタムで追加されたフォント名を取得します。

[ スイフト3 ]

for family in UIFont.familyNames {
            print("\(family)")

            for name in UIFont.fontNames(forFamilyName: family) {
                print("   \(name)")
            }
        }

[ 目的 - C ]

for (NSString *familyName in [UIFont familyNames]){
        NSLog(@"Family name: %@", familyName);
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"--Font name: %@", fontName);
        }
    }

ストーリーボードによるカスタムフォント

ストーリーボードのUIコンポーネントのカスタムフォントは、 ユーザー定義のランタイムアトリビュートをストーリーボードとカテゴリで簡単に実現できます。

利点は、

  • UI要素のアウトレットを定義する必要はありません
  • プログラマチックに要素のフォントを設定する必要はありません。

フォローする手順

  1. フォントファイル:アプリケーションバンドルにフォントファイル(.ttf)を追加し、このカスタムフォントのドキュメントのように、アプリケーションによって提供されるフォントの下にInfo.plistでフォントのエントリを追加します。

  2. 定義カテゴリ: UIKit + IBExtensionsのようなファイルを追加し、カスタムフォントを設定するUILabel、UIButtonなどのUI要素のカテゴリを追加します。すべてのカテゴリにfontNameというカスタムプロパティがあります。これは後でストーリーボードからカスタムフォントを設定するために使用されます(手順4のように)。

UIKit + IBExtensions.h

#import <UIKit/UIKit.h>

//Category extension for UILabel
@interface UILabel (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end

// Category extension for UITextField
@interface UITextField (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end

// Category extension for UIButton
@interface UIButton (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end
  1. Gettersと Setters 追加された各カテゴリのfontNameプロパティのgetterとsetterを定義します。

UIKit + IBExtensions.m

#import "UIKit+IBExtensions.h"

@implementation UILabel (IBExtensions)

- (NSString *)fontName {
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName {
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end

@implementation UITextField (IBExtensions)

- (NSString *)fontName {
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName {
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end

@implementation UIButton (IBExtensions)

- (NSString *)fontName {
    return self.titleLabel.font.fontName;
}

- (void)setFontName:(NSString *)fontName{
    self.titleLabel.font = [UIFont fontWithName:fontName size:self.titleLabel.font.pointSize];
}
@end
  1. ストーリーボードのフォントを設定する:ユーザー定義のランタイムアトリビュートにfontNamekeyPathとして、 カスタムフォントの名前を値としてtypeをStringで示すように追加します。

ここに画像の説明を入力

これにより、アプリの実行中にカスタムフォントが設定されます。

ノート:

  • Lato-Regularは私が使ったカスタムフォントです。
  • バンドルに追加された.ttfファイルの同じ名前は、ストーリーボードで拡張子なしで使用する必要があります。
  • フォントサイズは、UI要素の属性インスペクタで定義されているものと同じになります。

ストーリーボード内のコントロールにカスタムフォントを適用する

次の例は、ナビゲーションバーにカスタムフォントを適用する方法を示しています.Xcodeにあるいくつかの気まぐれな動作の修正が含まれています。カスタムフォントがプロジェクトに追加された後に、属性インスペクタを使用して、 UILabelsUIButtonsなどの他のUIControlにカスタムフォントを適用することもできます。作業中のサンプルやビデオの下部にある外部リンクをご確認ください。

  1. ナビゲーションコントローラ内のナビゲーションバーを選択する

navbar

  1. 属性インスペクタでタイトルフォントを変更する

タイトル - フォント

(Xcodeが新しいフォントを取得する前に、ナビゲーションバーのバーティントを切り替える必要があります)

ノート(警告)

これがXcode 7.1.1以降で動作することを確認しました。 ( 下記のサンプルを参照

  1. フォントが有効になる前にナビゲーションバーの色合いを切り替える必要があります(Xcodeのバグのようです;デフォルトに戻してフォントを固執することができます)
  2. システムフォントを選択した場合は、サイズが0.0でないことを確認してください(そうしないと、新しいフォントは無視されます)

サイズ

  1. ビューの階層内にNavBarが1つしかない場合でも、このように動作します。同じスタック内のセカンダリNavBarsは無視されるようです。 (マスターナビゲーションコントローラーのnavBarを表示すると、他のすべてのカスタムnavBar設定は無視されます)。

ゴッチャ(deux)

これらのうちのいくつかは繰り返されており、それは彼らが注目に値する可能性が高いことを意味します。

  1. ストーリーボードxmlが破損することがあります。これを行うには、ストーリーボードの構造をソースコードモードで確認する必要があります(ストーリーボードファイルを右クリック>名前を付けて開く...)
  2. 場合によっては、ユーザー定義の実行時属性に関連付けられたnavigationItemタグが、View Controllerタグではなく、ビュータグのxml子として設定されていました。その場合は、適切な操作のためにタグの間から削除してください。
  3. NavBar Tintを切り替えて、カスタムフォントが使用されていることを確認します。
  4. 動的フォントスタイルを使用しない限り、フォントのサイズパラメータを確認してください
  5. ビュー階層が設定を上書きします。スタックごとに1つのフォントしか使用できないようです。

結果

navbar-italic

サンプル

カスタムフォントの処理

注〜 素晴らしいチェックリストは、Code With Chrisウェブサイトから見つけることができ、サンプルダウンロードプロジェクトを見ることができます。

あなたがあなた自身のフォントを持っているし、ストーリーボードにそれを使用したい場合は、次の答えのまともなセットがありSO質問 。 1つの答えはこれらのステップを識別します。

  1. カスタムフォントファイル(.ttf、.ttc)を入手してください
  2. フォントファイルをXcodeプロジェクトにインポートする
  3. app-info.plistにapplication.Itによって提供されたFontsという名前のキーを追加します。これは配列型です。フォントファイル名をすべて配列に追加します。
  4. ストーリーボードのNavigationBarで、アトリビュートインスペクタに移動し、フォント選択領域の右のアイコンボタンをクリックします。ポップアップパネルで、フォントをカスタムに選択し、埋め込みフォントファミリを選択します。

カスタムフォントの回避策

だから、Xcodeは自然にUINavigationItemのカスタムフォントを処理できるように見えますが、その機能は正しく更新されていません(選択されたフォントは無視されます)。

UINavigationItem

これを回避するには:

1つの方法は、ストーリーボードを使用して修正し、一連のコードを追加することです:最初にUIView(UIButton、UILabel、または他のUIViewサブクラス)をView Controllerに追加します(ナビゲーション項目ではありません... Xcodeは現在、それ)。コントロールを追加したら、ストーリーボードのフォントを変更して、View Controllerにコンセントとしての参照を追加できます。そのビューをUINavigationItem.titleViewに割り当ててください。また、必要に応じてテキスト名をコードに設定することもできます。報告されたバグ(23600285)。

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

注 - この例は、私がSOに掲載した回答( ここ )から得られたものです。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow