Zmień kolor przezroczystego czarnego UINavigationBar

Natknąłem się na to wiele razy, nigdy nie znalazłem rozwiązania. Pasek nawigacyjny UINavigationController może być ustawiony na czarny przezroczysty jak:

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

Ponadto w UINavigationBar znajduje się półprzezroczysta właściwość, dokumenty mówią:

Gdy tak, pasek nawigacji jest rysowany z częściowym kryciem, niezależnie od tego stylu baru. Ilość krycia jest stała i nie może być zmieniony. Dopuszczalne jest ustawienie wartości tej właściwości, gdy pasek nawigacyjny jest zarządzany przez obiekt kontrolera nawigacji.

Próbowałem

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

I tysiąc wariacji: ustawienie właściwości translucent jako pierwsze, ustawienie jej w AppDelegate i w ViewController, ustawienie stylu barstyle jako pierwsze. Wynik jest zawsze taki sam: brak przezroczystości. stąd moje pytanie:

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

I mam nadzieję, że istnieje bezpieczne rozwiązanie.

Dzięki, m

Author: marimba, 2011-07-21

4 answers

Gdy już to wiesz, to jest dość proste:

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

Właściwość translucent wydaje się jedynie określać, czy główny widok powinien być widoczny pod paskiem nawigacyjnym i odpowiednio zmienić rozmiar widoku.

 50
Author: marimba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-08 14:39:01

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

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];
 17
Author: Nicu Surdu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 13:31:56

[[1]} przynajmniej w iOS 6 na iPhonie 4S możesz zrobić kolorowy półprzezroczysty pasek nawigacyjny w taki sposób:

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

Ustawienie alfa nie wydaje się już konieczne. To również pozostawia mój tytuł jasny biały i moje przyciski nieprzezroczyste.

 4
Author: Laura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-25 21:34:54

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;
 0
Author: Maksim Usenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-09 09:02:21