İOS 7'de Gezinme Çubuğu rengini nasıl değiştirebilirim?


213

İOS 7'de Gezinme Çubuğu rengini nasıl değiştiririm?

Temelde Twitter Nav Bar (bunun için güncellenmiş Twitter iOS7) gibi bir şey elde etmek istiyorum . A'nın üstüne bir gezinti çubuğuna gömüldüm view controller. Tek istediğim, gezinti çubuğu rengini üstteki yardımcı çubukla birlikte açık mavi olarak değiştirmek. İçimde bir seçenek bulamıyorum storyboard.



[[UINavigationBar görünümü] setBarTintColor: [UIColor blackColor]]; bu ios 7'den itibaren çalışacak
Chandramani

Yanıtlar:


319

tintColorİOS 7.0'da çubukların davranışı değişti. Artık çubuğun arka planını etkilemez.

Belgelerden:

barTintColor Sınıfı Başvurusu

Gezinme çubuğu arka planına uygulanacak renk tonu rengi.

@property(nonatomic, retain) UIColor *barTintColor

Tartışma
Bu renk, yarı saydam özelliğini olarak ayarlamadığınız sürece varsayılan olarak yarı saydam yapılır NO.

Kullanılabilirlik

İOS 7.0 ve sonraki sürümlerde kullanılabilir.

UINavigationBar.h içinde
bildirildi

kod

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    // iOS 7.0 or later   
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO;
}else {
    // iOS 6.1 or earlier
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

Bunu, iOS 7 UI Geçiş Kılavuzu'nda belirtildiği gibi iOS Sürümünü kontrol etmek için de kullanabiliriz

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // iOS 6.1 or earlier
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    } else {
        // iOS 7.0 or later     
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
        self.navigationController.navigationBar.translucent = NO;
    }

Xib Kullanarak DÜZENLE

resim açıklamasını buraya girin


3
ama bu kodu nereye yerleştirebilirim? Bu hahah için çok yeniyim. Ben uygulama delegesi içine yerleştirilir ve gerçekten çok şey yapıyor gibi görünmüyor. Yine de iyi inşa.
Patricio Guerra

1
iç görünümController
Rajneesh071

1
Ben viewController içinde viewDidLoad koymak istiyorum.
HalR

2
if (floor (NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) Bu, geçiş kılavuzunda apple tarafından belirtildiği gibi hangi iOS sürümünü çalıştırdığınızı test etmek daha iyidir: developer.apple.com/library/ios/documentation/userexperience/…
David Thompson

1
BarTintColor
SimpsOff 24/13

129

Orijinal soruyu sorduk - eski Twitter'ın Nav Bar görünümünü, beyaz metinli mavi arka planı elde etmek - sadece Xcode'daki Arayüz Oluşturucu'yu kullanarak yapmak çok kolaydır.

  • Belge Anahattı'nı kullanarak Gezinme Çubuğunuzu seçin.
  • Özellikler Denetçisi'nde, Gezinme Çubuğu grubunda Stili Varsayılan'dan Siyah'a değiştirin. Bu, Gezinme ve Durum çubuklarının arka plan rengini siyaha, metinlerini beyaza dönüştürür. Bu nedenle, uygulama çalışırken pil ve durum çubuğundaki diğer simgeler ve metinler beyaz görünür.
  • Aynı Gezinti Çubuğu grubunda Çubuk Tonunu istediğiniz renge değiştirin.
  • Gezinme Çubuğunuzda Çubuk Düğmesi öğeleri varsa, bunlar yine de metinlerini varsayılan mavi renkte gösterecektir, bu nedenle Öznitelik Denetçisi, Görünüm grubunda Renk Tonunu Beyaz Renk olarak değiştirin.

Bu sana ne istiyorsan onu getirmeli. Değişikliklerin nerede yapılacağını görmeyi kolaylaştıracak bir ekran görüntüsü.

İOS Simulator'daki sonuç da dahil olmak üzere gerekli değişikliklerin nerede yapılacağı

Yalnızca Çubuk Tonunu değiştirmenin Gezinme Çubuğu'ndaki veya Durum Çubuğundaki metin rengini değiştirmediğini unutmayın. Stilin de değiştirilmesi gerekiyor.


İOS

@ Rob85 Şu anda Xcode'un önünde değilim, ancak Xcode 7 (iOS 9 ile) yayınlandığında bu talimatların hala güncel olduğunu doğruladım. Gezinti Çubuğu'nun seçili olduğundan emin olun, siyah stil Gezinti Çubuğu'nun nitelik denetçisinde olmalıdır.
alondono

2
@ Rob85 Apple'ın Geliştirici web sitesini ve stillerini kontrol ettim Defaultve Blackhala iOS 9'da mevcut oldular . Kullanımdan kaldırılanlar, BlackOpaqueve BlackTranslucentbir Blackstil ve Saydam onay kutusunun bir kombinasyonu ile değiştirildi . Apple'ın Geliştirici web sitesinde
UIBarStyle

Üzgünüm @alondono kesinlikle doğru, ben navigasyon denetleyicisi gezinti çubuğuna tıklıyordum belge anahat değil thats neden göremedim. Kullanımdan kaldırıldığını gördüğüm siyah benzetilmiş metrikler-> durum çubuğundaydı. Cevaplarınız için teşekkürler
Rob85

@ Rob85 Havalı! Bilmeme izin verdiğin için teşekkürler.
alondono

76
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;

// *barTintColor* sets the background color
// *tintColor* sets the buttons color

4
Ve tam olarak bu kodu nereye koyabilirim? Acemi soru için üzgünüm hahah
Patricio Guerra

1
kod, navigasyon denetleyicisinin
pNre

2
İOS 9'da barTintColor'ı siyaha ayarlamak, zamanı, cihaz adını ve pili de siyah yapar, böylece onları göremezsiniz. Bundan kaçınmak için, barTintColor kullanmak yerine self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
TheJeff

46

Navigasyon tabanlı bir uygulamada kodu AppDelegate'e koyabilirsiniz. Daha ayrıntılı bir kod şunlar olabilir:

// Navigation bar appearance (background and title)

[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]];

[[UINavigationBar appearance] setTintColor:[UIColor barColor]];

// Navigation bar buttons appearance

[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil];

6
[[UINavigationBar appearance] setBarTintColor:[UIColor barColor]];iOS 7 için ekle
Samin

24

In viewDidLoad, ayarlayın:

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

blueColorİstediğiniz rengi değiştirin ( ).


18

Hızlı değiştirme gezinme çubuğu rengi için:

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

başlık yazı tipini, boyutunu, rengini değiştir:

self.title = "title"
self.navigationController?.navigationBar.titleTextAttributes = [
        NSAttributedString.Key.foregroundColor : UIColor.white,
        NSAttributedString.Key.font : UIFont(name: "Futura", size: 30)!
    ]

14

İOS 7'de -barTintColor özelliğini kullanmalısınız:

navController.navigationBar.barTintColor = [UIColor barColor];

13

Onaltılık kod kullanmak istiyorsanız, işte bunu yapmanın en iyi yolu.

İlk olarak, bunu sınıfınızın en üstünde tanımlayın:

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

Sonra "application didFinishLaunchingWithOptions" içine şunu koyun:

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];

00b0f0 yerine hex kodu koyun.


1
[UINavigationBar görünümü] çok yardımcı oldu.
Ken

11

İos6 ve ios7'yi desteklemeniz gerekiyorsa, bu açık mavi rengi UIViewController'ınızda kullanarak elde edebilirsiniz :

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
    if ([[ver objectAtIndex:0] intValue] >= 7) {
        self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
        self.navigationController.navigationBar.translucent = NO;
    }else{
        self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
    }
}

3
İOS 7'de: -self.navigationController.navigationBar.barTintColor çubuk rengidir AND -self.navigationController.navigationBar.tintColor düğmelerin metin rengidir (geri, bitti ...).
IgniteCoders

10

Aslında burada gördüğüm cevaplardan daha kolay:

1) Just make sure you select the navigation bar on the Navigation control. 
2) Select the color you want in the bar tint.
3) You have other options too, and/or individually on each view (just play with it).

Umarım bu birine yardımcı olur. Gördüğüm cevapları beğenmedim. Kodumu olabildiğince temiz tutmayı seviyorum. Programlı yapmanın yanlış olduğunu söylemiyorum, ama benim gibi insanlar var .... bu sizin için çocuklar. Gezinme çubuğunun rengini değiştirme


Teşekkürler, oyun oynarken bu aylar önce değişmiştim ve nasıl değiştirileceğini bulamadım!
Simetrik

Sorun değil, sevindim birine yardım edebilirim
pqsk

Bence bu en basit cevap! Thx
Ispas Claudiu

Sorun değil. Sevindim hala yararlı
pqsk

5

Rajneesh071'in kodunu tamamlamak için, varsayılan davranış iOS 6'dan 7'ye değiştirildiğinden, gezinme çubuğunun başlık rengini (ve isterseniz yazı tipini) de ayarlamak isteyebilirsiniz:

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7)
{
    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.translucent = NO;
    NSMutableDictionary *textAttributes = [[NSMutableDictionary alloc] initWithDictionary:mainNavController.navigationBar.titleTextAttributes];
    [textAttributes setValue:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    self.navigationController.navigationBar.titleTextAttributes = textAttributes;
}
else
{
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}

5

Gözlerinde farklı Yalnızca bu kodu ekleyin ViewContorller veya içinde seninAppDelegate

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
    //This is For iOS6
    [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
else
{
    //This is For iOS7
    [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}

4
//You could place this code into viewDidLoad
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
 }   
//Or you can place it into viewDidAppear
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:(BOOL)animated];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
}

4

Navigasyon tabanlı bir uygulamada rengi değiştirebilirsiniz

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
}

1
İOS7'de tintColor özelliğinin değiştirilmesi artık çubukların arka plan rengini değiştirme etkisine sahip değildir. İOS7'deki renk tonu yalnızca BarButtonItems vb. Metin renklerini etkiler
Pascal Bayer

4
#define _kisiOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)


  if (_kisiOS7)
    {
        [[UINavigationBar appearance] setBarTintColor:[UIcolor redcolor]];
    }
    else
    {
        [[UINavigationBar appearance] setBackgroundColor:[UIcolor blackcolor]];
        [[UINavigationBar appearance] setTintColor:[UIcolor graycolor]];
    }

3

Bu soru ve bu cevaplar faydalıdır. Onlarla birlikte istediğim koyu mavi navigationBarrengimi beyaz başlık ve düğme metni ile ayarlayabildim .

Ama aynı zamanda saati, taşıyıcıyı, sinyal gücünü vb. Beyaza çevirmem gerekiyordu. Siyah, lacivertle yeterince kontrast oluşturmadı.

Ben önceki cevapların birinde bu çözümü kaçmış olabilir, ama benim üst seviyeye bu satır ekleyerek o değişikliği başardı viewController'ler viewDidLoad:

[self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent];

UIStatusBarStyleLightContentçalışır, ancak için doğru enum görünüyor setBarStyle:olduğunuUIBarStyleBlack
Collin Allen

3
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
}

3

Renk için:

[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];

Görüntü için

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];
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.