Панель навигации, оттенок и цвет текста заголовка в iOS 8
Фоновый текст в строке состояния по-прежнему черный. Как изменить цвет на белый?
// 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]()
Ответы
Ответ 1
В 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 или более ранней версии используйте NSAttributedStringKey
вместо NSAttributedString.Key
)
Для titleTextAttributes
в документах говорится:
Вы можете указать шрифт, цвет текста, цвет тени текста и текст смещение тени для заголовка в словаре текстовых атрибутов
Ответ 2
Мне нравится Алекс, ответь. Если вы хотите что-то быстрое попробовать в 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]()
Ответ 3
Чтобы изменить цвет повсеместно, этот код должен находиться в функции NavigationController
viewDidLoad
:
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
и писать похожие строки в этой функции ViewController
viewWillAppear
.
Ответ 4
//В Swift 4
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
Ответ 5
Чтобы работать в 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
Ответ 6
Чтобы сделать эту работу в раскадровке (Инспектор Интерфейсного Разработчика)
С помощью IBDesignable
мы можем добавить дополнительные параметры в Инспектор Интерфейсного IBDesignable
для 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 на раскадровке.
![enter image description here]()
Ответ 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
'
Навигация по барам TintColor и tintColor установлена
Ответ 8
Обновлено с Swift 4
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.tintColor = UIColor.blue
self.navigationController?.navigationBar.barStyle = UIBarStyle.black
}
Ответ 9
В Swift5 и Xcode 10
self.navigationItem.title = "your name"
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
navigationController?.navigationBar.titleTextAttributes = textAttributes
Ответ 10
Swift 4
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.barTintColor = UIColor.orange
navigationController?.navigationBar.tintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}
Ответ 11
Swift 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
}
Ответ 12
Swift 4.2 версия Альберта answer-
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]
Ответ 13
Установка цвета текста заголовка панели навигации на белый в Swift версии 4.2:
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
Ответ 14
Для пользовательского цвета для TitleText
в NavigationBar
, здесь простой и краткий код для Swift 3:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
или же
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName :UIColor.white]
Ответ 15
в Swift 4.2
var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Black
nav?.tintColor = UIColor.white
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
Ответ 16
В Swift 3 это работает:
navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]
Ответ 17
Свифт вверх через Свифт 3.2 (не Свифт 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