web-dev-qa-db-ja.com

UINavigationBarのタイトルのフォントとテキストの色を変更する方法

タイトルのフォントをAvenirに変更し、白にしたいです。 viewDidLoadメソッドのコードは次のとおりです。

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

このコードはタイトルの色のみを変更し、フォントは変更しません。さらに、App Delegate Fileでこれを実装しようとしましたが、うまくいきませんでした。

UINavigationBarは次のようになります: enter image description here

タイトルにもAvenirのフォントが必要です。どうすればこれを達成できますか?

20
Rehaan Advani

私はこれを使用します:

更新、これも必要なようです:

    self.navigationController?.navigationBar.barStyle       = UIBarStyle.Black // I then set the color using:

    self.navigationController?.navigationBar.barTintColor   = UIColor(red: 204/255, green: 47/255, blue: 40/255, alpha: 1.0) // a lovely red

    self.navigationController?.navigationBar.tintColor = UIColor.whiteColor() // for titles, buttons, etc.

    let navigationTitleFont = UIFont(name: "Avenir", size: 20)!

    self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: navigationTitleFont]
32
Fred Faust

スタイルをアプリ全体に適用する場合は、これらの行をAppDelegate.mファイルに追加します。

NSShadow* shadow = [NSShadow new]; 
shadow.shadowOffset = CGSizeMake(0.0f, 0.0f); 
shadow.shadowColor = [UIColor blackColor]; 

[[UINavigationBar appearance] setTitleTextAttributes: @{
NSForegroundColorAttributeName: [UIColor whiteColor],
NSFontAttributeName: [UIFont fontWithName:@"Kelvetica Nobis" size:20.0f],
NSShadowAttributeName: shadow 
}];

NSForegroundColorAttributeNameはフォントの色を設定します。

NSFontAttributeNameは、カスタムフォントをタイトルテキストに設定します。

NSShadowAttributeNameはテキストにナイスシャドウ効果を適用します。必要に応じてこの部分を削除できます。

また、事前にこれらの行を追加して、Navigation Controller内の別のビューに移動したときにアクションバーの戻るボタンに表示されるテキストを非表示にすることができます。

[[UIBarButtonItem appearance]
     setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000)
     forBarMetrics:UIBarMetricsDefault];

これがあなたの質問に役立つことを願っています:)

11
Laky

コードは問題ありません。titleTextAttributesをすべて1行で設定するだけです。

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white , NSFontAttributeName: UIFont(name: "Avenir", size: 17)!]
6
Milad Faridnia

誰かがこれをSwift 4で必要とする場合:

let navBarAppearance = UINavigationBar.appearance()
navBarAppearance.barTintColor = .red
navBarAppearance.tintColor = .white
navBarAppearance.titleTextAttributes = [
        NSAttributedString.Key.foregroundColor: UIColor.white,
        NSAttributedString.Key.font: UIFont(name: "Avenir", size: 20)!]
5
algrid

私はただアウトレットを作成してこれを行います:

@IBOutlet weak var navigationBar: UINavigationBar!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Avenir", size: 30)!]
}
1
Volkodav