109

だから私はナビゲーションバーのタイトルフォントを変更する必要があるこのコードを持っていますが、そうではありません

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont
                                                                       fontWithName:_dataManager.optionsSettings.fontString size:14], NSFontAttributeName,
                            [UIColor whiteColor], NSForegroundColorAttributeName, nil];

[[UINavigationBar appearance] setTitleTextAttributes:attributes];

このコードで戻るボタンのフォントを変更しても問題なく動作します。

   //set backbutton font
NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                  [UIFont fontWithName:_dataManager.optionsSettings.fontString size:15], NSFontAttributeName,
                                  nil];
[[UIBarButtonItem appearance] setTitleTextAttributes:normalAttributes
                                            forState:UIControlStateNormal];
4

18 に答える 18

54

他の回答に問題はありません。フォントを設定するためのストーリーボード バージョンを共有しているだけです。

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

ナビゲーションバー

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

タイトルフォント

(Xcode が新しいフォントを取得する前に、Navigation Bar の Bar Tint を切り替える必要がある可能性があります)

注意事項(注意事項)

これが Xcode 7.1.1+ で動作することを確認しました。(以下のサンプルを参照してください)

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

サイズ

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

ガッチャ (deux)

これらのいくつかは繰り返されているため、注目に値する可能性が非常に高い.

  1. ストーリーボード xml が破損することがあります。これには、Storyboard as Source Code モードで構造を確認する必要があります (Storyboard ファイルを右クリック > Open As ...)。
  2. 場合によっては、ユーザー定義のランタイム属性に関連付けられた navigationItem タグが、ビュー コントローラー タグではなく、ビュー タグの xml 子として設定されていました。その場合は、適切な操作のためにタグの間から取り外してください。
  3. NavBar Tint を切り替えて、カスタム フォントが使用されるようにします。
  4. ダイナミック フォント スタイルを使用していない場合は、フォントのサイズ パラメータを確認します
  5. ビュー階層は設定を上書きします。スタックごとに 1 つのフォントが可能であるようです。

結果

navbar イタリック体

サンプル

カスタム フォントの処理

注 ~ Code With Chris の Web サイトには便利なチェックリストがあり、サンプル ダウンロード プロジェクトを参照できます。

独自のフォントがあり、それをストーリーボードで使用したい場合は、次のSO Questionに適切な回答のセットがあります。1 つの答えは、これらのステップを識別します。

  1. カスタム フォント ファイル (.ttf、.ttc) を取得します。
  2. フォント ファイルを Xcode プロジェクトにインポートする
  3. app-info.plist で、アプリケーションによって提供される Fonts という名前のキーを追加します。これは配列タイプであり、すべてのフォント ファイル名を配列に追加します。注: ファイル拡張子を含みます。
  4. ストーリーボードで、NavigationBar の属性インスペクターに移動し、フォント選択領域の右のアイコン ボタンをクリックします。ポップアップ パネルで、フォントをカスタムに選択し、埋め込まれたフォント名のファミリーを選択します。

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

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

UINavigationItem

これを回避するには:

1 つの方法は、ストーリーボードを使用して修正し、コード行を追加することです。まず、UIView (UIButton、UILabel、またはその他の UIView サブクラス) を View Controller (Navigation Item ではありません...Xcode では現在許可されていません) に追加します。それ)。コントロールを追加した後、ストーリーボードでフォントを変更し、View Controller へのアウトレットとして参照を追加できます。そのビューを UINavigationItem.titleView に割り当てるだけです。必要に応じて、コードでテキスト名を設定することもできます。報告されたバグ (23600285)。

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView
于 2015-11-17T16:08:48.003 に答える
14

ナビゲーションバーのタイトルを変更するための私のSwiftコード:

let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
self.navigationController.navigationBar.titleTextAttributes = attributes

また、背景のフォントも変更したい場合は、AppDelegate にこれがあります。

let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
UIBarButtonItem.appearance().setTitleTextAttributes(attributes, forState: UIControlState.Normal)
于 2015-04-10T14:07:05.860 に答える
9

この 1 行のコードを App Delegate に追加します - Did Finish Launch 。アプリケーション全体でフォント、ナビゲーション バーの色を変更します。

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont(name: "YOUR FONT NAME", size: 25.0)!]
于 2018-11-14T16:44:05.253 に答える
2

迅速:-

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Love Nature", size: 40)!]
于 2018-07-26T10:55:14.393 に答える
0

スウィフト 4.2

self.navigationController?.navigationBar.titleTextAttributes =
        [NSAttributedString.Key.foregroundColor: UIColor.white,
         NSAttributedString.Key.font: UIFont(name: "LemonMilklight", size: 21)!]
于 2018-11-15T22:03:31.923 に答える
0

Swift 4 の回答は次のとおりです。

    let textAttributes:[String:Any]? = [NSAttributedStringKey.foregroundColor.rawValue:UIColor.blue, NSAttributedStringKey.font.rawValue:UIFont(name:"Avenir Next", size:20)!]
    navigationController?.navigationBar.titleTextAttributes = textAttributes
于 2017-07-19T00:15:44.443 に答える
-1

Swift 3.0での作業タイトルの色を変更するには、このようにtitleTextAttributesを追加する必要があります

        let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
        self.navigationController.navigationBar.titleTextAttributes = textAttributes

For changing navigationBar background color you can use this
        self.navigationController.navigationBar.barTintColor = UIColor.white

For changing navigationBar back title and back arrow color you can use this
       self.navigationController.navigationBar.tintColor = UIColor.white
于 2017-06-03T09:57:06.517 に答える