web-dev-qa-db-ja.com

IOS 8のNavigationBarバー、色合い、およびタイトルのテキストの色

ステータスバーの背景テキストはまだ黒です。色を白に変えるには?

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

}

enter image description here

156
AG1

AppDelegate.Swiftに、application(_:didFinishLaunchingWithOptions:)に次のように書きます。

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]

(Swift 4以前ではNSAttributedString.Keyの代わりにNSAttributedStringKeyを使用してください)

titleTextAttributesについては、 docs と言う:

テキスト属性辞書でタイトルのフォント、テキストの色、テキストの影の色、およびテキストの影のオフセットを指定できます。

278

私はアレックスの答えが好きです。あなたが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
}

enter image description here

108
AG1

色を普遍的に変更するには、このコードは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関数に同様の行を書く必要があります。

81
Alex

// Swift 4では

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

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

[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
16

ストーリーボードでこの仕事をする(Interface Builder Inspector)

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

@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の属性を設定するだけです。

enter image description here

11
Fangming

アプリ全体の色とバーの色を設定する場合は、次のコードを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が設定されている

7
VirajP

Swift 4でアップデート

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

Swift 4.1とXcode 9.4.1の場合

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

スイフト4

override func viewDidLoad() {
    super.viewDidLoad()

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

スイフト4.1

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
    }
3
Patrick.Bellot

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

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

カスタムカラーをTitleTextNavigationBarにするには、ここにSwift 3の簡単で短いコードを記述します。

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

または

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

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]
1
Abhishek Jain

swift 4.2では

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

Swift 3.2からSwift up(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
bubbaspike

Swift 3ではこれが機能します。

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