iOS 8のNavigationBarバー、ティント、タイトルテキストの色


177

ステータスバーの背景テキストはまだ黒です。色を白に変更するにはどうすればよいですか?

// io8, swift, Xcode 6.0.1 
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]

}

ここに画像の説明を入力してください

回答:


312

ではAppDelegate.swiftでは、application(_:didFinishLaunchingWithOptions:)I以下を置きます:

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

(のNSAttributedStringKey代わりにSwift 4以前を使用する場合NSAttributedString.Key

についてtitleTextAttributesドキュメントは言う:

タイトルのフォント、テキストの色、テキストの影の色、テキストの影のオフセットをテキスト属性ディクショナリで指定できます


6
複数のナビゲーションバーがある場合はどうなりますか?
sumitは

6
tintColorはXcode 7.3.1では機能しません。テキストはまだ黒です。
triiiiista 2016年

1
Xcode 8.2では、titleTextAttributesは自動補完されませんが、機能します。
okysabeni 16

barTintColorはまだ必要ですか?その行の削除は引き続き機能します
rgkobashi

122

アレックスの答えが好きです。あなたが何かをしたい場合は、迅速に試してみることをViewController必ず使用してください

viewWillAppear()
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    var nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.Black
    nav?.tintColor = UIColor.white
    nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
    //nav?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange] // swift 4.2
}

ここに画像の説明を入力してください


しかし、私はiso 8.1を使用しています
Saorikido '

1
なぜviewWillAppear()?私はこれをviewDidLoadで行っており、正常に動作します。
アダムジョンズ

4
UIViewを表示するたびに設定したいからです。UITabBarビューでviewDidLoad()と言う場合は、再度設定されている別のタブに移動してから、元のビューが1回しか読み込まれなかったため、戻って上書きされます。
FractalDoctor 2015

2
swift 4の更新-更新されるNSForegroundColorAttributeNameはずですNSAttributedStringKey.foregroundColor
アラン・スカルパ

3
Swift 4.2のアップデート:NSAttributedString.Key.foregroundColor代わりにNSForegroundColorAttributeName
Stephane Paquet

81

普遍的に色を変更するには、このコードをNavigationControllerviewDidLoad関数に配置する必要があります。

class NavigationController: UINavigationController, UIViewControllerTransitioningDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Status bar white font
        self.navigationBar.barStyle = UIBarStyle.Black
        self.navigationBar.tintColor = UIColor.whiteColor()
    }
}

ごとにそれを変更するにはViewController、あなたが参照しなければならないでしょうNavigationControllerから、ViewControllerそれに類似した行をし、書き込みViewControllerviewWillAppear機能。


これらのメソッドを使用するようにNavigationControllerをオーバーライドする方法
AG1 2014

NavigationControllerはオーバーライドせず、ViewDidLoad関数で変更するだけです。上記の回答を更新しました。
Alex

1
開発者は、ワークスペースにNavigationController.swiftを追加する必要があるだけですか?もしそうならそれは素晴らしいです!
AG1 2014年

5
@ AG1これは不正解です。新しいファイルNavigationController.swiftを追加するだけでは不十分です。デフォルトではGeneric UINavigationControllerを使用するため、ストーリーボードのナビゲーションコントローラーをIdentity Inspectorのこのファイルに接続する必要があります。
角兵衛14

2
カスタムナビゲーションコントローラーを作成する必要なしに、これらすべてをストーリーボードで実行することもできます。Bar TineとStyleのプロパティは、右側の属性インスペクターの下にあります。
Markymark

31

スウィフト5

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

スウィフト4

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]

2
取得:Type 'NSAttributedStringKey'(aka 'NSString')has no member 'foregroundColor'
Alfi

最新バージョンのxcode 10とswift 4.2の以下のコードを使用してください。self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]
Bhavsang Jam

16

Objective-Cで作業するにviewWillAppearは、CustomViewControllerに次の行を挿入する必要があります。

[self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
[self.navigationController.navigationBar setTranslucent:NO];

Swift2.xこれは動作します:

self.navigationController?.navigationBar.barTintColor = UIColor.redColor()

Swift3.xこれは動作します:

self.navigationController?.navigationBar.barTintColor = UIColor.red

しかし、別のビューコントローラーに戻ると、色も変わっています。これを防ぐ方法についてのアイデア。私は私のメインのビューコントローラを1つの色にして他を別の色にしたいと思っています。
user3163404

1
新しいビューコントローラーでも色を設定する必要があると思います。
Niko Klausnitzer、2015

13

ストーリーボードでこの作業を行うには(Interface Builder Inspector)

の助けを借りて、IBDesignableInterface Builder Inspectorにオプションを追加UINavigationControllerして、ストーリーボードで微調整することができます。まず、次のコードをプロジェクトに追加します。

@IBDesignable extension UINavigationController {
    @IBInspectable var barTintColor: UIColor? {
        set {
            navigationBar.barTintColor = newValue
        }
        get {
            guard  let color = navigationBar.barTintColor else { return nil }
            return color
        }
    }

    @IBInspectable var tintColor: UIColor? {
        set {
            navigationBar.tintColor = newValue
        }
        get {
            guard  let color = navigationBar.tintColor else { return nil }
            return color
        }
    }

    @IBInspectable var titleColor: UIColor? {
        set {
            guard let color = newValue else { return }
            navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: color]
        }
        get {
            return navigationBar.titleTextAttributes?["NSForegroundColorAttributeName"] as? UIColor
        }
    }
}

次に、ストーリーボードでUINavigationControllerの属性を設定します。

ここに画像の説明を入力してください


7

アプリ全体のティントカラーとバーカラーを設定する場合は、次のコードをAppDelegate.swiftに追加できます。

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

    var navigationBarAppearace = UINavigationBar.appearance()

    navigationBarAppearace.tintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
    navigationBarAppearace.barTintColor = UIColor(red:0.76, green:0.40, blue:0.40, alpha:1.0)
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    return true
`

ナビゲーションbarTintColorとtintColorが設定されている


6

Swift 4で更新

override func viewDidLoad() {
    super.viewDidLoad()
        self.navigationController?.navigationBar.tintColor = UIColor.blue
        self.navigationController?.navigationBar.barStyle = UIBarStyle.black
}

6

Swift5およびXcode 10

self.navigationItem.title = "your name"
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
navigationController?.navigationBar.titleTextAttributes = textAttributes

このコードスニペットは質問を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。
31piy

4

Albertの回答のSwift 4.2バージョン-

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.white]

私はあなたがこの答えをどのように追加したかを本当に気に入りました。.barTintColorは現在オプションではありません。.backgroundColorを意味しますか?
Ben

4

Swiftバージョン4.2でナビゲーションバータイトルのテキスト色を白に設定:

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

3

スウィフト4

override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.navigationBar.barTintColor = UIColor.orange
    navigationController?.navigationBar.tintColor = UIColor.white
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}

3

Swift 4.1

funcをviewDidLoadに追加します。

override func viewDidLoad() {
  super.viewDidLoad()

  setup()
}   

ではsetup()、機能追加:

func setup() {

        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationBar.barStyle = .blackOpaque
        navigationItem.title = "YOUR_TITLE_HERE"
        navigationController?.navigationBar.barTintColor = .black
        let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
        navigationController?.navigationBar.largeTitleTextAttributes = attributes
    }

1

カスタムカラーをにするにTitleTextNavigationBar、Swift 3のシンプルで短いコードを次に示します。

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

または

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName :UIColor.white]

1

Swift 4.2

var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Black
nav?.tintColor = UIColor.white
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

1

Swift 3.2まで(Swift 4.0ではない)

    self.navigationController?.navigationItem.largeTitleDisplayMode = .always
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

    // unconfirmed but I assume this works:
    self.navigationController?.navigationBar.barTintColor = UIColor.white
    self.navigationController?.navigationBar.barStyle = UIBarStyle.black

0

Swift 3ではこれはうまくいきます:

navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]

0

Swift 5.1

ViewDidLoad()必要に応じて、コピーして貼り付け、サイズとサイズを変更するだけです。コピーして貼り付ける前に、画面の上部にナビゲーションバーを追加します。

navigationController?.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont(name: "TitilliumWeb-Bold.ttf", size: 16.0)!, NSAttributedString.Key.foregroundColor: UIColor.white]

それが機能しない場合は、テキストの色を変更するだけで試すことができます

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.