Gezinme çubuğunda Geri düğmesinin rengini değiştirme


194

Ayarlar düğmesinin rengini beyaz olarak değiştirmeye çalışıyorum, ancak değiştiremiyorum.

Bunların her ikisini de denedim:

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

ama değişiklik yok, hala şöyle görünüyor:

resim açıklamasını buraya girin

Bu düğmeyi nasıl beyaz yapabilirim?

Yanıtlar:


284

Film şeridinizdeki global renk tonunu, tahtadaki boş bir alana tıklayarak değiştirebilir ve sağ araç çubuğunda "Dosya denetçisini göster" seçeneğini belirlediğinizde, araç çubuğunun altında "Global Ton" seçeneğini göreceksiniz.

Film şeridinde Global Ton seçeneği


7
woah .. Güzel bulmak !. bunu programlı olarak nasıl yapacağınızı biliyor musunuz?
Paul Lehn

10
Büyük bul, ancak küresel renk tonunu beyaza (orijinal soruya göre) değiştirmek, tablo görünümü detay açıklama göstergeleri gibi şeyleri beyaza değiştirir ve bu da söz konusu tabloda görünmez olmasını sağlar.
Mike Fischer

1
Mike'ın sorunlarına ekleme: bu kontrol aynı zamanda tüm metin düğmelerinizi bu renge dönüştürür ve böylece bunları elle bir renge ayarlamanız gerekir (yani varsayılan renkler açıkça yoktur) veya sadece farklı bir yöntem kullanmanız gerekir.
Sirenler

4
Bu hızlı ve kolay bir düzeltme olsa da, renk beyazsa / arka planla eşleşiyorsa diğer sorunlara yol açar. Metin alanlarınız varsa, imleci fark edilmez kılar, bu da imleci görünür olmadığı için kullanıcıya bir metin alanına yazamıyormuş gibi görünmesini sağlar.
Jose Ramirez

5
@PaulLehn Bunu programlı olarak yapmak AppDelegate.swift > application(application:didFinishLaunchingWithOptions:)için şunu yazabilirsiniz:self.window!.tintColor = .yourColor
mmika1000

206

Bu kod ok rengini değiştirir

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

Bu işe yaramazsa aşağıdaki kodu kullanın:

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

Swift 3 Notları

UIColor.whiteColor() ve benzeri basitleştirildi UIColor.white

Ayrıca, önceden örtük olan birçok seçenek açık olarak değiştirildi, bu yüzden şunlara ihtiyacınız olabilir:

self.navigationController?.navigationBar =

7
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()benim için çalıştı (Swift 2.2)
Mike Fischer

self.navigationBar.barStyle = UIBarStyle.Black self.navigationBar.tintColor = UIColor.whiteColor () benim için çalıştı (Swift 3)
Ajay.km

Neden UIBarStyle.Black kullanacağınızı açıklayabilir misiniz?
mmika1000

Lütfen güncelleyin: self.navigationController? .NavigationBar.tintColor =
mohonish

1
sadece oku değiştirir, arka metin Xcode 11'de hala aynı kalır
jeff ayan


56

Bunu kullanmalısınız:

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

Bu düğmeyi beyaz yaptı, ancak arka plan rengini daha açık hale getirdi. Çubuğun arka planına tam rengini nasıl vereceğini biliyor musun?
Brandon Evans

Bu doğru cevap. BarTintColor ve başlık / çubuk düğmelerini beyaza ayarlayarak çubuğu mor yapar.
zirinisp

36

hızlı

 override func viewDidLoad() {
     super.viewDidLoad()

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

1
Hızlı 3'te kullanın
Deepak Tagadiya

ayrıca hangi hızlı sürümü kullanabileceğini söyle?
Deepak Tagadiya

Ve hangi sınıf / dosya / vc bu kodu projeye yazıyor?
Deepak Tagadiya

ViewWillAppear'da çağrılan setCloseButton () işlevinin başında.
Jayprakash Dubey

NextViewController.swift dosyasına yaz, ayrıca viewDidLoad () 'da yaz.
Deepak Tagadiya

20

Bunun gibi kullanabilirsiniz. İçeri yerleştirin 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
    }

20

Hızlı 4.2

Uygulama temasının tamamını değiştir

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

        UINavigationBar.appearance().tintColor = .white

        return true
    }

Belirli denetleyiciyi değiştirme

let navController = UINavigationController.init(rootViewController: yourViewController) 
navController.navigationBar.tintColor = .red

present(navController, animated: true, completion: nil)

tüm uygulamanın rengini değiştirir. Belirli bir ekran / belirli için değiştirmem gerekirse ne olur UINavigationController?
Vyachaslav Gerchicov

Belirli bir denetleyiciyi değiştirmek istiyorsanız, yukarıdaki cevap @VyachaslavGerchicov tam uygulama teması içindir. Bunun gibi bir şey yapalım: let navController = UINavigationController.init (rootViewController: yourViewController) navController.navigationBar.tintColor =
.red

İOS 13 kullanıyorsanız artık didFinishLaunchingWithOptions kullanmıyorsanız, SceneDelegate'e taşındı.
JBarros35

15

In swift3 , To Geri düğmesine ayarlı red.

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

Bu, gezinti çubuğunu ayarlayacak, çubuk düğmesi öğesini değil
carlodonz

1
Evet, soru buydu.
Vincent

" Gezinti çubuğundaki Geri düğmesinin rengini değiştir "
carlodonz

Benim için çalışan tek yöntem buydu. Apple'ın uygulanmasıyla ilgili şu anda bir şeyler bozuk gibi görünüyor ...
Dave Y

13

Swift 4'te, bu sorunu kullanarak şunları yapabilirsiniz:

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

8

Hızlı 3

En çok oylanan cevap Swift 3 için doğru değil.

resim açıklamasını buraya girin

Rengi değiştirmek için doğru kod:

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

Rengi değiştirmek istiyorsanız, UIColor.white'ı istediğiniz renge değiştirin


Benim için çalışan tek yöntem buydu. Apple'ın uygulanmasıyla ilgili şu anda bir şeyler bozuk gibi görünüyor ...
Dave Y

7

Tüm yanıtlar ayarı UINavigationBar.appearance().tintColor, Apple'ın içindeki belgelerle çakışıyor UIAppearance.h.

İOS7 için not: iOS7'de tintColormülk taşınmıştır UIViewve şimdi özel bir kalıtsal davranış açıklanmıştır UIView.h. Bu kalıtsal davranış, görünüm proxy'siyle çakışabilir ve bu nedenle tintColorartık görünüm proxy'sine izin verilmez.

Xcode'da, üstbilgi dosyasını incelemek ve özelliğin açıklamalı olduğundan emin olmak için görünüm proxy'si ile kullanmak istediğiniz her özelliğe komut tıklatmanız gerekir UI_APPEARANCE_SELECTOR.

Bu nedenle, gezinme çubuğu morunu ve görünüm proxy'si aracılığıyla uygulama boyunca beyaz başlığı ve düğmeleri beyazlaştırmanın doğru yolu:

UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = .purple
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
UIBarButtonItem.appearance().tintColor = .white

Bunun UIBarButtonItembir alt sınıf UIViewdeğil, daha çok olduğunu unutmayın NSObject. Yani onun tintColormülkiyet miras değil tintColorgelen UIView.

Ne yazık ki, UIBarButtonItem.tintColoraçıklamalı değil UI_APPEARANCE_SELECTOR- ama bana bir belge hatası gibi görünüyor. Apple Engineering'in bu radardaki cevabı desteklendiğini belirtiyor.


UINavigationBar.appearance (). LargeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] // ayrıca
Guilherme

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

Bu pasaj sihri yapar. RedColor yerine, dilediğiniz gibi değiştirin.


6

Bu kodu AppDelegatesınıf içinde, içinde kullanın didFinishLaunchingWithOptions.

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

UINavigationBar.appearance().tintColor = .white

}

4

Bu kodu deneyelim:

 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
}

Çok teşekkür ederim, efendim
Arpit B Parekh

4

hızlı 2.0 kullanımda

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

4

"Ayarlar" görünüm denetleyicinizde zaten geri düğmesi varsa ve "Ödeme Bilgileri" görünüm denetleyicisindeki geri düğmesi rengini başka bir şeye değiştirmek istiyorsanız, "Ayarlar" görünüm denetleyicisinin bu sekme için hazırlanmasında bunu yapabilirsiniz. :

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               
    }
}

3
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

Bu benim için çalışıyor, iOS 9.0+


2

AppDelegate.swift içinde didFinishLaunchingWithOptions işlevine aşağıdaki kodu ekleyin

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()]

Bu kod bana şu hatayı veriyor: "Çözümlenmemiş 'uicolorFromHex' tanımlayıcısının kullanımı" Bunu çözmeme yardımcı olan var mı?
jonathan3087

muhtemelen UIColor için bir uzantı. Bir uzantıyı nasıl oluşturacağınızı stackoverflow'da arayabilirsiniz.
KvdLingen

2

Swift 2.0 için, Gezinme çubuğu renk tonunu , başlık metnini ve geri düğmesi renk tonunu değiştirmek için AppDelegate.swift öğesinde aşağıdakiler kullanılarak değiştirildi

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
}

2

Kimsenin bundan neden bahsetmediğinden emin değilim ... ama tam olarak benim yaptığım şeyi yapıyordum viewDidLoad... ve işe yaramıyordu. Sonra kodumu içine yerleştirdim viewWillAppearve hepsi çalıştı.

Yukarıdaki çözüm tek bir baruttoniği değiştirmektir . Kodunuzdaki her navigationbar çubuğunun rengini değiştirmek istiyorsanız, bu yanıtı izleyin .

Temel olarak sınıfın kendisini kullanarak appearance()değiştirmek, uygulamanızdaki bu görünümün tüm örneklerinde küresel bir değişiklik yapmak gibidir. Daha fazlası için buraya bakın


1

Geri düğmenizi gizlemek ve kendiniz yapmak için bir seçeneğiniz var. Sonra rengini ayarlayın.

Ben bunu yaptım:

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()

1
Soru, özellikle sol gezinme öğesini şekillendirmekti ve bu, soruyu doğrudan cevaplamaya en yakın olanıydı.
zanaat

0

- (geçersiz) viewDidLoad içinde bu satırla çözülecektir:

self.navigationItem.backBarButtonItem.tintColor = UIColor.whiteColor;

(lldb) p self.navigationItem.backBarButtonItem (UIBarButtonItem *) $9 = nil (lldb)
dengApro

0

Bu satırı eklemelisiniz

 self.navigationController?.navigationBar.topItem?.backBarButtonItem?.tintColor = .black

0

Genel kullanıcı arabirimi ayarlamak veya ViewController koymak yerine özel NavigationController'ı tercih ederim.

İşte benim çözümüm


class AppNavigationController : UINavigationController {

  override func viewDidLoad() {
    super.viewDidLoad()
    self.delegate = self
  }

  override func viewWillAppear(_ animated: Bool) {

  }

}
extension AppNavigationController : UINavigationControllerDelegate {

  func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    let backButtonItem = UIBarButtonItem(
      title: "   ",
      style: UIBarButtonItem.Style.plain,
      target: nil,
      action: nil)
    backButtonItem.tintColor = UIColor.gray
    viewController.navigationItem.backBarButtonItem = backButtonItem
  }

  func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {

  }

}

Ayrıca böyle Elma Api uğraşmak gerekmez EKEventEditViewController , PickerViewController ve böylece küresel ayarları kullanmak eğer ui gibi üzerindeUIBarButtonItem.appearance().tintColor = .white


0
    self.navigationController?.navigationBar.tintColor = UIColor.black // to change the all text color in navigation bar or navigation 
    self.navigationController?.navigationBar.barTintColor = UIColor.white // change the navigation background color
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.black] // To change only navigation bar title text color
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.