it-roy-ru.com

Как изменить цвет текста заголовка NavBar в Swift 4?

При разработке в Swift 3 я привык писать:

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

размещение этого в AppDelegate изменит цвет заголовка всех UINavbars на оранжевый.

Теперь я хочу сделать то же самое со Swift 4 и iOS 11. 

5
Sanf0rd

Вы можете изменить цвет заголовка UINavigationBar, установив свойство foregroundColor в titleTextAttributes.

Как задокументировано здесь :

Свойство titleTextAttributes определяет атрибуты для отображение заголовка бара. Вы можете указать шрифт, цвет текста, цвет тени текста и смещение тени текста для заголовка в тексте Словарь атрибутов с использованием шрифта, foregroundColor и shadow ключи соответственно.

Таким образом, вы будете иметь тот же эффект, делая это:

UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor.rawValue: UIColor.orange]
13
mtrevia

Swift 4.1 Изменение цвета заголовка панели навигации  

    if #available(iOS 11.0, *) {
        //To change iOS 11 navigationBar largeTitle color

        UINavigationBar.appearance().prefersLargeTitles = true
        UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    } else {
        // for default navigation bar title color
        UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    }

Swift 4.2+ Изменение цвета заголовка панели навигации  

    if #available(iOS 11.0, *) {
        //To change iOS 11 navigationBar largeTitle color

        UINavigationBar.appearance().prefersLargeTitles = true
        UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
    } else {
        // for default navigation bar title color
        UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
    }
6
Ezimet

Swift 4

    UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): UIColor.orange]
3
Safad Funy

Вы можете изменить цвет заголовка панели навигации с помощью этого кода 

navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
1
Bilal Mustafa

Реализация Swift 4 для больших и обычных изданий: 

extension UINavigationController {
    func setTitleForgroundTitleColor(_ color: UIColor) {
        self.navigationBar.titleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): color]
    }

    func setLargeTitleColor(_ color: UIColor) {
        self.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue): color]
    }

    func setAllTitleColor(_ color: UIColor) {
        setTitleForgroundTitleColor(color)
        setLargeTitleColor(color)
    }
}
1
thexande

Swift 4.2

fileprivate func convertToOptionalNSAttributedStringKeyDictionary(_ input: [String: Any]?) -> [NSAttributedString.Key: Any]? {
        guard let input = input else { return nil }
        return Dictionary(uniqueKeysWithValues: input.map { key, value in (NSAttributedString.Key(rawValue: key), value)})
}

Использование

   // Set Navigation bar Title color

UINavigationBar.appearance().titleTextAttributes = convertToOptionalNSAttributedStringKeyDictionary([NSAttributedString.Key.foregroundColor.rawValue : UIColor.white])
0
Durul Dalkanat