-1

プログラムナビゲーションバー(タイトル)のフォントを変更するにはどうすればよいですか?私はかなり長い間検索しており、さまざまなコードを見てきましたが、私のプロジェクトではうまくいきませんでした。プログラムナビゲーションバー(Objc)のフォントを変更する(Xcode 7.3)

次は私が試したことのいくつかである:

[[UINavigationBar appearance] setTitleTextAttributes: @{ 
          UITextAttributeTextColor: [UIColor  greenColor], 
         UITextAttributeTextShadowColor: [UIColor  redColor], 
        UITextAttributeTextShadowOffset: [NSValue  valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], 
           UITextAttributeFont: [UIFont  fontWithName:@"Helvetica" size:20.0f] 
}]; 

`NSShadow *shadow = [[NSShadow alloc] init]; 
shadow.shadowColor = [UIColor blackColor]; 
shadow.shadowBlurRadius = 0.0; 
shadow.shadowOffset = CGSizeMake(0.0, 2.0); 
[[UINavigationBar appearance] setTitleTextAttributes: @{ 
       NSForegroundColorAttributeName : [UIColor blackColor], 
          NSFontAttributeName : [UIFont  fontWithName:@"Helvetica-Light" size:0.0f], 
          NSShadowAttributeName : shadow 

}];


[[UINavigationBar appearance] setTitleTextAttributes: 
[NSDictionary dictionaryWithObjectsAndKeys: 
    [UIColor whiteColor], NSForegroundColorAttributeName, 
     [UIFont fontWithName:@"LeagueGothic-Regular" size:16.0], NSFontAttributeName,nil]]; 

いくつかの背景情報:navigationControllerはプログラム的に設定し、スタック内の4つのビューを保持しています。この一見単純な問題のヒント/助けは大いに感謝します。

+0

お手数ですがお試しください。 – rmaddy

+0

@rmaddy:提案してくれてありがとう(取ったと私は間違いなく最初からやっていたはずです!)。 – AliMar

+0

'UINavigationBar appearance'を使うと' UINavigationBar appearance'を呼び出した後に生成される 'UINavigationBar'のすべてのインスタンスに影響します。そのため、ナビゲーションバーが作成される前にそれを呼び出すようにしてください。単一のナビゲーションバーのみに影響を与えたい場合は、 'UINavigationBar appearance'を使用しないでください。代わりに、特定のナビゲーションバーインスタンスで 'setTitleTextAttributes'を呼び出します。 – rmaddy

答えて

0

titleTextAttributesを設定します。それについて「非難された」ものは何もない。それをNSAttributedStringの属性のように扱うとうまくいきます。

例:

UINavigationBar.appearance().titleTextAttributes = [ 
     NSFontAttributeName: UIFont(name:"Chalkduster", size:20)!, 
     NSForegroundColorAttributeName: UIColor.black 
    ] 

結果:コメントと答えSOユーザーの指導から

enter image description here

+0

お返事ありがとうございます^ _ ^私は 'titleTextAttributes'を使用しています(私は自分の質問を更新しました)。あなたが私が行方不明だと思うことが他にもあるかどうか私に知らせてください。 – AliMar

+0

まあ、最初のものは明らかに間違っています。全体のUITextAttributeFontはウィンドウ外です。そのため、私は「NSAttributedStringの属性のように扱う」と言ったのです。私の答えは正しい。なぜあなたはそれがそうではないと思うかを知るために何をしているのか十分に分かりません。 – matt

+0

実際のコードと実際の結果のスクリーンショットを追加しました。あなたも行け、同様にしてください。 – matt

0

(@rmaddyと@mattありがとう)私は回避策を見つけました。 Iフォント(並びに色及びサイズ)は個々にそうような各ビューコントローラ(VC)ののviewDidLoadの属性変更:

[self.navigationController.navigationBar setTitleTextAttributes: @{NSFontAttributeName:[UIFont fontWithName: @"FONT NAME" size: 20.f], NSForegroundColorAttributeName: [UIColor whiteColor]}];

はまた、IはrootVCためViewDidAppearにナビゲーションバーのタイトルを設定しなければなりませんでした - 最初にアプリが開くと、タイトルはViewDidLoadでも問題ありませんが、別のVCからrootVCに移動したときにタイトルが消えました。

これは、将来他の誰かを助けることができる場合に備えて、この最後の部分を含んでいます。

関連する問題