İOS 7 Gezinme Çubuğu metin ve ok rengi


234

Gezinti Çubuğu'nun siyah ve içindeki tüm renklerin beyaz olması için arka plan ayarlamak istiyorum .

Yani, bu kodu kullandım:

[[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor whiteColor],
      NSForegroundColorAttributeName,
      [UIColor whiteColor],
      NSForegroundColorAttributeName,
      [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
      NSForegroundColorAttributeName,
      [UIFont fontWithName:@"Arial-Bold" size:0.0],
      NSFontAttributeName,
      nil]];

Ancak geri düğmesi metin rengi , ok ve çubuk düğmesi hala varsayılan mavi renge sahiptir .
Aşağıdaki renkler gibi bu renkleri nasıl değiştirebilirim?

resim açıklamasını buraya girin


1
([self.window yanıt verirseSeçici: @selector (setTintColor :)]) self.window.tintColor = [UIColor whiteColor];
Evgeniy S


İlginçtir ki kodunuz benim için harika çalıştı (sadece metin rengini beyaza dönüştürmek istedim). Teşekkürler!
William T. Mallard

Kullandığınız mavi renk nedir? Güzel gözüküyor!
ebi

@ebi bazı insanlar paylaşmayı sevmez. Seçmek için sadece bir renk seçici kullanın. Veya .... işte gidiyorsunuz: RGB: (18, 60, 133)
pnizzle

Yanıtlar:


753

Özelliklerinden bazılarının davranışı iOS 7'denUINavigationBar değişti . Aşağıda gösterilen resimde görebilirsiniz:

resim açıklamasını buraya girin


Sizinle paylaşmak istediğim iki güzel bağlantı. Daha fazla ayrıntı için şu bağlantıları inceleyebilirsiniz:

  1. iOS 7 UI Geçiş Kılavuzu .
  2. İOS 7 için Uygulamanızı Güncelleme .

BarTintColor için Apple Belgeleri şöyle diyor:

Yarı saydam özelliğini HAYIR olarak ayarlamadığınız sürece bu renk varsayılan olarak yarı saydam yapılır.

Basit kod :

self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
[self.navigationController.navigationBar 
 setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
self.navigationController.navigationBar.translucent = NO;

Denedim: self.nav.navigationBar.tintColor = [UIColor whiteColor]; self.nav.navigationBar.barTintColor = [UIColor colorWithRed: 6.0 / 255.0 yeşil: 12.0 / 255.0 mavi: 19.0 / 255.0 alfa: 1.0]; Ama her şey hala mavi.
1110

2
Daha önce okudum ama bu sadece metni değiştiriyor ama ok ve değil. Hala mavi :(
1110

1
@ 1110: Bir göz atın: Renk
Tonunu

2
@Chelsea: Bu çizgiye ne dersin? :[self.navigationController.navigationBar setTitleTextAttributes:@{[UIFont fontWithName:@"YOURFONT" size:14], NSFontAttributeName}];
Bhavin

4
Uygulamadaki tüm uygulama için renk tonunu değiştirebileceğinizi unutmayın: [[UINavigationBar görünüm] setTintColor: [UIColor blackColor]];
simon_smiley

85

resim açıklamasını buraya girin

Bu beni anlamaya yaklaşık yarım gün sürdü ama bu benim için işe yaradı. NavigationController öğesini başlatan rootViewController içinde, bu kodu viewDidAppear yönteminin içine koydum:

//set bar color
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:85.0/255.0 green:143.0/255.0 blue:220.0/255.0 alpha:1.0]];
//optional, i don't want my bar to be translucent
[self.navigationController.navigationBar setTranslucent:NO];
//set title and title color
[self.navigationItem setTitle:@"Title"];
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];
//set back button color
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal];
//set back button arrow color
[self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];

Bu konuda benim tam sonrası burada


1
Geri okunun rengini değiştirme konusunda sorun yaşıyorsanız, bu pasaj sorunu çözecektir. En azından, gerçek rootViewController'ınıza eklenen son kod satırına ihtiyacınız olacaktır.
Ruslar

Evet, John. Dün de yaklaşık bir saat harcadım. Bir sorun (büyük sorun), belgelerin tüm olası özellikleri işaret etmede korkunç olmasıydı. Nerede listelenebilecekleri hakkında bir fikrin var mı? TY.
Alex Zavatone

Teşekkürler @john Özel Renkimle çakışıyor, nedenini açıklayabilir misin?
Vaibhav Limbani

Bence yeni bir soru yaratmalısın. Kodunuzu ve ne yaptığınızı görmedikçe size nedenini anlatamadım. @MacGeek
John Riselvato

3
Teşekkürler, işe yaradı :). Ancak UITextAttributeTextColor, iOS 7'de kullanımdan kaldırıldı, şimdi NSForegroundColorAttributeName
YYamil

37

Swift3, ios 10

Rengi global olarak atamak için AppDelegate'te didFinishLaunchingWithOptions:

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

Swift 4, iOS 11

let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
UINavigationBar.appearance().titleTextAttributes = textAttributes

21

Vin'in yanıtı benim için çok işe yaradı. İşte Xamarin.iOS / MonoTouch kullanan C # geliştiricileri için aynı çözüm:

var navigationBar = NavigationController.NavigationBar; //or another reference
navigationBar.BarTintColor = UIColor.Blue;
navigationBar.TintColor = UIColor.White;
navigationBar.SetTitleTextAttributes(new UITextAttributes() { TextColor = UIColor.White });
navigationBar.Translucent = false;

SetTitleTextAttributes'ı istediğiniz gibi ayarlayabileceğinizi bilmiyordum.
Brad Moore

12

Swift / iOS8

let textAttributes = NSMutableDictionary(capacity:1)
textAttributes.setObject(UIColor.whiteColor(), forKey: NSForegroundColorAttributeName)
navigationController?.navigationBar.titleTextAttributes = textAttributes

3
let textAttributes = NSMutableDictionary (kapasite: 1) artık NSMutableDictionary başlatması için doğru çağrıdır.
juliensaad

12
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

1
Bu yaklaşımı AppDelegate'in kendisinde ayarlayabildiğiniz için seviyorum ve Görünüm proxy'sini kullanıyor.
Niyog Ray

8

UINavigationBarBaşlığın rengini doğru şekilde değiştirmek için bu kodu kullanın:

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]];

UITextAttributeTextColoren son ios 7 sürümünde kullanımdan kaldırıldı. NSForegroundColorAttributeNameBunun yerine kullanın .


5

Başlık metni boyutunu ve metin rengini değiştirmek istiyorsanız , nesnelerinin 2'si için NSDictionary titleTextAttributes öğesini değiştirmeniz gerekir :

    self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:13.0],NSFontAttributeName,
                                                                  [UIColor whiteColor], NSForegroundColorAttributeName, 
                                                                  nil];

2

Önceki cevapların doğru olduğunu düşünüyorum, bu aynı şeyi yapmanın başka bir yolu. Birisi için yararlı olması durumunda burada başkalarıyla paylaşıyorum. İos7'deki gezinme çubuğunun metnini / başlık rengini şu şekilde değiştirebilirsiniz:

UIColor *red = [UIColor colorWithRed:254.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0];
NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1];
[navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ];
self.navigationController.navigationBar.titleTextAttributes = navBarTextAttributes;

1

Görünüşe göre Accessibility, iOS Settingsgeçersiz kılmadaki kontroller gezinme çubuğu düğmelerine renk açısından yapmaya çalıştığınız her şeyi geçersiz kılıyor. Tüm ayarların varsayılan konumlara sahip olduğunuzdan emin olun (kontrastı artır, kalın metin , düğme şekilleri vb. Kapalı olarak ayarlayın), aksi takdirde hiçbir değişiklik görmezsiniz. Bir kez yaptım, tüm renk değişikliği kodu beklendiği gibi çalışmaya başladı. Hepsini kapatmanız gerekmeyebilir, ancak daha fazla takip etmedim.


Tam olarak bana ne oldu. "Kalın Metin" açıkken bir çubuk düğmesi öğesinin renk tonunu değiştiremedim. Bu iyi değil. Şimdi bunun yerine bir grafik kullanmam gerekecek :-(
Ken

0

Swift 5 / iOS 13

Denetleyicideki başlık rengini değiştirmek için:

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
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.