96

Я пытаюсь изменить цвет кнопки «Настройки» на белый, но не могу ее изменить.Изменить цвет кнопки «Назад» на панели навигации

Я пробовал оба эти:

navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor() 
navigationItem.backBarButtonItem?.tintColor = UIColor.whiteColor() 

, но никаких изменений, она по-прежнему выглядит следующим образом:

enter image description here

Как мне сделать, что белая кнопка?

ответ

30

Вы должны использовать это:

navigationController?.navigationBar.barTintColor = .purple 
navigationController?.navigationBar.tintColor = .white 
+0

Это сделало кнопку белой, но сделало цвет фона намного легче. Знаете ли вы, как снова вернуть фон бара? –

+0

Я редактировал код выше, я тестировал и это работа. –

+0

Это правильный ответ. Это сделает панель пурпурной, установив barTintColor и кнопки заголовка/панели белыми. – zirinisp

117

Этот код изменяет стрела цвет по

self.navigationController.navigationBar.tintColor = UIColor.whiteColor(); 

Если это не работает, используйте код ниже:

self.navigationBar.barStyle = UIBarStyle.Black 
self.navigationBar.tintColor = UIColor.whiteColor() 

Swift 3 Примечания

UIColor.whiteColor() и аналогичные упрощены до UIColor.white

Кроме того, многие ранее неявные OPTIONALS были изменены в явной, так что вам может понадобиться:

self.navigationController?.navigationBar = 
+2

'self.navigationController? .navigationBar.tintColor = UIColor.whiteColor()' работал для меня (Swift 2.2) –

+0

self.navigationBar.barStyle = UIBarStyle.Black self.navigationBar.tintColor = UIColor.whiteColor() работал для меня (Swift 3) –

+0

Можете ли вы объяснить, почему использовать UIBarStyle.Black? – Muli

4

Добавить следующий код didFinishLaunchingWithOptions функции в AppDelegate. скор

var navigationBarAppearace = UINavigationBar.appearance() 

navigationBarAppearace.tintColor = uicolorFromHex(0xffffff) // White color 
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517) // Green shade 

// change navigation item title color 
navigationBarAppearace.titleTextAttributes =[NSForegroundColorAttributeName:UIColor.whiteColor()] 
+0

Этот код вызывает ошибку: «Использование неразрешенного идентификатора« uicolorFromHex »« Может ли кто-нибудь помочь мне решить эту проблему? – jonathan3087

+0

возможно расширение для UIColor. Как создать расширение можно найти в stackoverflow. – KvdLingen

5
self.navigationController?.navigationBar.tintColor = UIColor.redColor() 

Этот фрагмент делает магию. Вместо redColor измените его на свое желание.

+0

Спасибо, Суреш, это работает для меня. –

114

Вы можете изменить общий цвет оттенка в своем раскадровке, щелкнув пустое пространство на доске и выбрав нужную панель инструментов «Показать инспектор файлов», и в нижней части панели инструментов вы увидите «Глобальный оттенок» ".

screenshot

+2

woah .. Приятно найти !. знаете ли вы, как это сделать программно? –

+2

Большая находка, но изменение глобального оттенка на белый (по первому вопросу) также изменит такие вещи, как индикаторы раскрытия подробностей таблицы, на белый, что сделает их невидимыми в рассматриваемой таблице. –

+0

Добавляем к проблемам Майка: этот элемент управления также делает все ваши текстовые кнопки таким цветом, и вам придется либо установить их вручную (т. Е. Цвета по умолчанию явно), либо просто использовать другой метод. – Sirens

14

Вы можете использовать как этот. Поместите его внутри AppDelegate.swift.

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

     UINavigationBar.appearance().translucent = false 
     UINavigationBar.appearance().barTintColor = UIColor(rgba: "#2c8eb5") 
     UINavigationBar.appearance().tintColor = UIColor.whiteColor() 
     UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()] 

     return true 
    } 
1

Для Swift 2.0, чтобы изменить Навигационно-бар оттенок цвета, текст заголовка и кнопку назад оттенок цвета изменен с помощью следующих в AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    // Override point for customization after application launch. 


    //Navigation bar tint color change 

    UINavigationBar.appearance().barTintColor = UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 0.5) 

    //Back button tint color change 

    UINavigationBar.appearance().barStyle = UIBarStyle.Default 
    UINavigationBar.appearance().tintColor = UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1) 

    //Navigation Menu font tint color change 

    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor(red: 204/255.0, green: 255/255.0, blue: 204/255.0, alpha: 1), NSFontAttributeName: UIFont(name: "OpenSans-Bold", size: 25)!]//UIColor(red: 42/255.0, green: 140/255.0, blue: 166/255.0, alpha: 1.0) 

    UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent 


    return true 
} 
3

Lets попробуйте этот код:

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

    let navigationBarAppearace = UINavigationBar.appearance() 
    navigationBarAppearace.tintColor = UIColor.whiteColor() // Back buttons and such 
    navigationBarAppearace.barTintColor = UIColor.purpleColor() // Bar's background color 
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()] // Title's text color 

    self.window?.backgroundColor = UIColor.whiteColor() 
    return true 
} 
0

У вас есть выбор, спрячь свой задний буй ттон и сделать это с собой. Затем установите его цвет.

Я сделал это:

self.navigationItem.setHidesBackButton(true, animated: true) 
let backbtn = UIBarButtonItem(title: "Back", style:UIBarButtonItemStyle.Plain, target: self, action: "backTapped:") 
self.navigationItem.leftBarButtonItem = backbtn 
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.grayColor() 
4

в быстрой 2,0 использовании

self.navigationController!.navigationBar.tintColor = UIColor.whiteColor(); 
1
self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; 

Это работает для меня, IOS 9.0+

45

Очень легко настроить в раскадровке:

enter image description here

enter image description here

+2

Спасибо, человек, действительно решение для раскадровки. –

7

В Swift3, чтобы установить кнопку Назад red.

self.navigationController?.navigationBar.tintColor = UIColor.red 
+0

это установит навигационную панель, а не кнопку панели. – carlodonz

+0

Да, это был вопрос. – Vincent

+0

«Изменить цвет кнопки« Назад »** на панели навигации« – carlodonz

5

Swift 3

Самый upvoted ответ не является правильным для Swift 3.

enter image description here

правильный код, чтобы изменить цвет является:

self.navigationController?.navigationBar.tintColor = UIColor.white 

Если вы хотите ch ange color, change UIColor.white выше до нужного цвета

4

Используйте этот код в AppDelegate классе, внутри didFinishLaunchingWithOptions.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

UINavigationBar.appearance().tintColor = .white 

} 
0

Не знаю, почему никто не говорил об этом ... но я делал именно то, что вы делали в моей viewDidLoad ... и он не работает. Затем я поместил свой код в viewWillAppear, и все это сработало.

Вышеупомянутое решение состоит в том, чтобы изменить barbuttonItem. Если вы хотите изменить цвет для каждые navigationBar в вашем коде, а затем следуйте this answer.

В основном изменение самого класса с использованием appearance() - это как глобальное изменение во всех экземплярах этого вида в вашем приложении.Для более см here

6

Swift 3

override func viewDidLoad() { 
    super.viewDidLoad() 

self.navigationController?.navigationBar.tintColor = UIColor.white 
} 
+1

Использовать в swift 3. –

+0

Этот код не работает –

+0

ok, я проверю. –

3

Если у вас уже есть кнопки обратно в «Настройки» контроллера представления, и вы хотите изменить кнопку назад цвет на «Платежная информация» вид контроллера к чему-то иначе, вы можете сделать это в «Настройка» вид контроллер подготовит для Segue как это:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "YourPaymentInformationSegue" 
    { 
     //Make the back button for "Payment Information" gray: 
     self.navigationItem.backBarButtonItem?.tintColor = UIColor.gray    
    } 
} 
7

В Swift 4, вы можете позаботиться о этой проблеме с помощью:

let navStyles = UINavigationBar.appearance() 
// This will set the color of the text for the back buttons. 
navStyles.tintColor = .white 
// This will set the background color for navBar 
navStyles.barTintColor = .black 
Смежные вопросы