33

Natknąłem się na to wiele razy, nigdy nie znalazłem rozwiązania. A UINavigationController za navigationBar można ustawić na czarnym przezroczyste jak:Zmień kolor półprzezroczystego czarnego UINavigationBar

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent; 

Ponadto, istnieje właściwość półprzezroczysty w UINavigationBar, docs powiedzieć:

Jeżeli TAK, pasek nawigacyjny jest zasysane z częściowym kryciem , niezależnie od stylu paska. Ilość nieprzezroczystości jest stała i nie może być zmieniona na . Dopuszczalne jest ustawienie wartości tej właściwości podczas zarządzania paskiem nawigacyjnym przez obiekt kontrolera nawigacyjnego.

Próbowałem

self.navigationcontroller.navigationBar.tintColor=[UIColor blueColor]; 
self.navigationcontroller.navigationBar.translucent=YES; 

i tysiąc odmian: Ustawienie właściwości półprzezroczysty pierwszy, umieszczając go w AppDelegate aw ViewController, ustawienie barstyle pierwszy. Wynik jest zawsze taki sam: Brak przezroczystości. Stąd moje pytanie:

Czy to naprawdę możliwe, aby zmienić kolor półprzezroczystego UINavigationBar do czegoś innego niż czarny (najlepiej w UINavigationController) ?.

Mam nadzieję, że istnieje rozwiązanie bezpieczne dla recenzji.

dzięki, m

Odpowiedz

50

Gdy zorientujesz, że to dość prosta:

self.navigationController.navigationBar.tintColor = [UIColor blueColor]; 
self.navigationController.navigationBar.alpha = 0.7f; 
self.navigationController.navigationBar.translucent = YES; 

Obiekt translucent wydaje się jedynie do określenia pogoda głównym widoku powinny być widoczne w pasku nawigacyjnym, a zmianę rozmiaru widoku odpowiednio.

+0

+1, to działa na mnie. – SmallChess

+1

+1 Jest w przybliżeniu taki sam dla MonoTouch –

+9

Zauważyłem, że efekt uboczny zmienia alfa dla całego paska nawigacyjnego (a nie tylko tła). Konkretnie tytuł nie jest "jasny" biały, ale wydaje się również być 0.7f alfa. – bobtheowl2

17

Aby naśladować dokładniej efekt półprzezroczysty, co oznacza, że ​​tylko tła paska nawigacyjnego jest półprzezroczysty, a przyciski, tytuł i wszystko inne są nieprzezroczyste, można zrobić tak:

self.navigationController.navigationBar.translucent = YES; 
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f]; 
+1

To zadziałało dla mnie. Lubię to rozwiązanie bardziej. – Ali

4

Przynajmniej w iOS 6 na iPhone 4S, można zrobić kolorowy półprzezroczysty pasek nawigacyjny tak:

self.navigationController.navigationBar.tintColor = [UIColor blueColor]; 
self.navigationController.navigationBar.translucent = YES; 

ustawienie alfa wydaje się nie być już konieczne. Powoduje to również, że mój tytuł jest biały, a przyciski nieprzezroczyste.

0

Oto rozwiązanie:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; 
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:3.f/255.f green:8.f/255.f blue:61.f/255.f alpha:1]]; 
self.navigationController.navigationBar.translucent = YES; 
self.navigationController.navigationBar.barTintColor = [UINavigationBar appearance].barTintColor;