Jak zmienić kolor tekstu paska stanu w systemie iOS
Moja aplikacja ma ciemne tło, ale w iOS 7 pasek stanu stał się przezroczysty. Więc nic tam nie widzę, tylko zielony wskaźnik baterii w rogu. Jak Mogę zmienić kolor tekstu paska stanu na biały, tak jak na ekranie głównym?
30 answers
Ustaw
UIViewControllerBasedStatusBarAppearance
naYES
wplik plist.W
viewDidLoad
do a[self setNeedsStatusBarAppearanceUpdate];
-
Dodać następującą metodę:
- (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
Uwaga : to nie działa dla kontrolerów wewnątrz UINavigationController
, Zobacz komentarz Tysona poniżej :)
Swift 3 - to będzie działać wewnątrz UINavigationController
. Dodaj ten kod do kontrolera.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
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
2017-05-23 12:34:54
Alternatywnie możesz zrezygnować z wyglądu paska stanu opartego na widoku:
- Ustaw
View controller-based status bar appearance
naNO
w swoimInfo.plist
. - Call
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Uwaga: ta metoda została wycofana w iOS9. Zamiast tego użyj preferredStatusBarStyle
w kontrolerze UIViewController. (zobacz Biblioteka programistów Apple)
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-11-17 12:35:58
Możesz to zrobić bez pisania żadnej linii kodu!
Wykonaj następujące czynności, aby kolor tekstu paska stanu był biały w całej aplikacji
On you project plist file:
- Styl paska stanu:
Transparent black style (alpha of 0.5)
- Wyświetl pasek stanu oparty na kontrolerze:
NO
- pasek stanu jest początkowo Ukryty:
NO
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
2016-10-04 11:27:48
Uwaga: Większość upvoted odpowiedź nie działa na iOS 7 / 8
W Info.plist ustawia 'wygląd paska stanu na podstawie kontrolera' jako NO
In AppDelegate add
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Do
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
To rozwiązanie działa na iOS 7 / 8
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
2016-11-20 12:05:08
Dla mnie nic się nie stało z wykorzystaniem wszystkich rzeczy w innych odpowiedziach (i z innych źródeł/dokumentacji). Pomocne było ustawienie stylu paska nawigacyjnego na" czarny " w XIB. To zmieniło tekst na biały bez żadnego kodu.
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-12-14 14:46:51
Nic z tego nie działało dla mnie, więc tutaj jest rozwiązanie pracy...
W Info.plist
Dodaj wiersz:
UIViewControllerBasedStatusBarAppearance
, i ustaw wartość NO
.
Następnie w AppDelegate w didFinishLaunchingWithOptions
dodaj te wiersze:
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
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-19 20:50:35
Nie musisz robić żadnego kodu do tego
Musisz dodać klucz" wyświetl wygląd paska stanu na podstawie kontrolera " w info.plist w następujący sposób:
& ustaw jego typ wartości na Boolean & wartość na NO. Następnie kliknij Ustawienia projektu, a następnie kliknij kartę Ogólne i w obszarze Informacje o wdrożeniu Ustaw preferowany styl paska stanu na .Światło w następujący sposób:
To wszystko.
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
2016-02-19 10:41:29
Tylko dwa kroki w następujący sposób:
Krok 1:
W zakładce Info project target
Dodaj wiersz:
UIViewControllerBasedStatusBarAppearance
, ustaw wartość NO
.
Krok 2:
W projekcie AppDelegate.m
:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
…
[application setStatusBarStyle:UIStatusBarStyleLightContent];
…
}
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
2014-04-01 19:35:56
[5]}to działa w Golden Master iOS 7 i Xcode 5 GM seed i iOS7 SDK wydany 18 września 2013 (przynajmniej z ukrytym kontrolerem nawigacji): {]}
Ustaw
the UIViewControllerBasedStatusBarAppearance
NaNO
wInfo.plist
.W metodzie
ViewDidLoad
lub gdziekolwiek, gdzie chcesz zmienić styl paska stanu:[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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-09-21 10:31:45
Jeśli Twój UIViewController znajduje się wewnątrz UINavigationController, musisz ustawić styl:
-[UINavigationBar setBarStyle:UIBarStyleBlack]
Oryginalna odpowiedź jest tutaj
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-09-27 08:16:46
Jeśli masz wbudowany Kontroler nawigacyjny utworzony przez Interface Builder , Upewnij się, że w klasie zarządzającej kontrolerem nawigacyjnym ustawisz następujące wartości:
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
To powinno wystarczyć.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-09-22 16:57:44
W tym celu należy skontaktować się z działem obsługi klienta pod adresem
Oto co zrobiłem i działa:
Info.plist:
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-19 20:53:51
W AppDelegate.m, Dodaj następujący tekst.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
I w pliku Plist Ustaw 'wygląd paska stanu w widoku kontrolera' NA NO.
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-19 19:04:38
Po Prostu W Appdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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
2014-02-05 12:00:56
To naprawdę działa jak bułka z masłem.
Przejdź do aplikacji info.plist
.
- Ustaw
View controller-based status bar appearance
naNO
- Ustaw
Status bar style
naUIStatusBarStyleLightContent
Następnie przejdź do delegata aplikacji i wklej poniższy kod, w którym ustawiasz Kontroler rootviewcontroller systemu windows.
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
[self.window.rootViewController.view addSubview:view];
}
Bingo. Dla mnie działa.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-19 20:52:41
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
2016-08-02 12:47:50
System IOS 7 pozwala poszczególnym kontrolerom widoku określać wygląd paska stanu, zgodnie z opisem w dokumentacji dewelopera Apple:]}
IOS 7 daje kontrolerom widoku możliwość dostosowania stylu paska stanu, gdy aplikacja jest uruchomiona. Dobrym sposobem na dynamiczną zmianę stylu paska stanu jest zaimplementowanie
preferredStatusBarStyle
i-w bloku animacji-zaktualizowanie wyglądu paska stanu i wywołaniesetNeedsStatusBarAppearanceUpdate
.
Ustawienie globalnego wyglądu paska stanu to dwuetapowy proces.
Najpierw musisz powiedzieć iOS, że nie chcesz ustawiać wyglądu paska stanu na podstawie widoku po widoku.
Następnie musisz przejąć kontrolę i faktycznie ustawić nowy styl globalnego paska stanu.
Aby wyłączyć kontrolę paska stanu Widok po widoku, musisz ustawić właściwość View controller-based status bar appearance
w Info.plist
.
Otwórz Nawigator projektu i wybierz projekt dla aplikacji iOS, a następnie wybierz kartę Informacje.
Najedź kursorem na wiersz, a następnie kliknij znak plus wygląda na to, że dodajesz nową właściwość do .plist
.
Wprowadź View controller-based status bar appearance
w polu Klucz, a następnie upewnij się, że pole Type jest ustawione na Boolean
. Na koniec wprowadź NO
w polu Wartość.
Aby ustawić globalny styl dla paska stanu, dodaj inną właściwość w zakładce Info z kluczem Status bar style
, typem String
i wartością Opaque black style
.
Oto wpis na blogu z nieco bardziej szczegółowymi informacjami i przykładowym kodem:
Http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/
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-12-10 13:47:43
W Swift 3 jest bardzo proste tylko z 2 kroki.
Przejdź do informacji.plist i zmień klucz View controller-based status bar appearance
na "nie".
Następnie w Appdelegate wystarczy dodać tę linię w metodzie didfinishlaunchingwithoptions
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
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
2017-03-27 22:23:30
Nie musisz robić dodatkowych rzeczy, po prostu napisz ten kod w kontrolerze viewController i uzyskaj pasek stanu kolor biały
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
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-09-27 08:49:26
Odpowiedź zaktualizowana dla nasion Xcode GM:
In
Info.plist
putView controller-based status bar appearance
asNO
-
W projekcie zestaw:
-
In ViewDidLoad:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
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-19 20:56:25
Myślę, że wszystkie odpowiedzi nie wskazują problemu, ponieważ wszystkie działają w konkretnych scenariuszach. Ale jeśli chcesz pokryć wszystkie sprawy, postępuj zgodnie z poniższymi punktami:
W zależności od tego, gdzie potrzebujesz paska stanu Styl Światła, zawsze powinieneś mieć na uwadze te 3 punkty:
1)Jeśli potrzebujesz paska stanu na ekranie uruchamiania lub w innych miejscach, gdzie nie możesz go kontrolować (Nie w kontrolerach widoku, ale raczej w niektórych elementach/momentach sterowanych systemem, takich jak Uruchom Screen) Przejdź do ustawień projektu
2) Jeśli masz kontroler wewnątrz kontrolera nawigacyjnego Możesz go zmienić w kreatorze interfejsów w następujący sposób:
A) Wybierz pasek nawigacji kontrolera nawigacji
B) następnie Ustaw styl paska nawigacyjnego na "czarny" , ponieważ oznacza to, że będziesz miał "czarne" -> ciemne tło pod paskiem stanu, więc ustawi pasek stanu na biały
Lub zrób to w kodzie w następujący sposób
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3) Jeśli tylko kontroler wymaga własnego stylu paska stanu i nie jest osadzony w jakiejś strukturze kontenera jako UINavigationController
Ustaw styl paska stanu w kodzie kontrolera:
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-09-18 16:29:04
Simply calling
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
W
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
Metoda mojego AppDelegate
działa dla mnie świetnie w iOS7.
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
2014-04-25 13:11:22
Jest to udokumentowane w iOS 7 UI Transition Guide, do którego potrzebny jest Apple developer ID, aby uzyskać bezpośredni dostęp. Odpowiedni fragment:
Ponieważ pasek stanu jest przezroczysty, Widok za nim jest widoczny. [...] Użyj stałej
UIStatusBarStyle
, aby określić, czy zawartość paska stanu ma być ciemna czy jasna:
UIStatusBarStyleDefault
wyświetla ciemną zawartość. [...]
UIStatusBarStyleLightContent
wyświetla zawartość światła. Użyj, gdy ciemna zawartość jest za statusem bar.
Również być może interesujące:
W systemie iOS 7 możesz kontrolować styl paska stanu z pojedynczego kontrolera vew i zmieniać go podczas uruchamiania aplikacji. Aby włączyć to zachowanie, Dodaj klucz
UIViewControllerBasedStatusBarAppearance
do plikuInfo.plist
aplikacji i nadaj mu wartośćYES
.
Zdecydowanie polecam przejrzenie dokumentu, do którego ponownie możesz uzyskać dostęp za pomocą Apple developer ID.
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-29 12:12:55
Jeśli chcesz uzyskać ten sam wynik z Swift, możesz użyć tego kodu w swojej aplikacji.plik swift:
UINavigationBar.appearance().barStyle = .BlackTranslucent
A tekst paska stanu będzie biały : -)!
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
2016-01-10 19:30:06
Zrobiłem kilka rzeczy inaczej i to działa na mnie.
Bez zmian w kodzie, zrobiłem konfigurację .plik plist taki:
- Wyświetl wygląd paska stanu opartego na kontrolerze > Nie
- Styl paska stanu > UIStatusBarStyleLightContent (prosty łańcuch)
Mam nadzieję, że to pomoże.
Edit
Dla każdego kontrolera widoku zmieniam właściwość symulowanych metryk "paska stanu" w storyboard z "wywnioskowana " na"Lekka Zawartość"
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-09-22 14:18:15
W info.plist ustaw wartość pola No widok pasek stanu oparty na kontrolerze i ustaw pasek stanu style light w ustawieniu target > ogólne.
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-30 05:06:22
Pozwól, że dam ci pełną odpowiedź na twoje pytanie. Zmiana Koloru tekstu paska stanu jest bardzo łatwa, ale jej trochę mylące w iOS 7 specjalnie dla początkujących.
Jeśli próbujesz zmienić kolor z czarnego na biały w Storyboard, wybierając kontroler widoku i przechodząc do symulowanych metryk po prawej stronie, to nie zadziała i nie wiem dlaczego. Powinno działać poprzez zmianę w ten sposób, ale w jakikolwiek sposób.
Po drugie, nie znajdziesz UIViewControllerBasedStatusBarAppearance właściwość w pliście, ale domyślnie jej nie ma. Musisz dodać go samodzielnie, klikając przycisk+, a następnie ustawić go na NO.
Kolor tekstu paska stanu systemu Ios 7
Na koniec musisz przejść do AppDelegate.plik m i dodaj następującą w metodzie didFinishLaunchingWithOptions linię:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Spowoduje to zmianę koloru na biały dla wszystkich kontrolerów widoku. Mam nadzieję, że to pomoże!
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-06-30 17:38:28
Jeśli nadal chcesz używać View controller-based status bar appearance
W info.plist ustawiony na YES, co oznacza, że możesz zmienić pasek stanu dla każdego kontrolera widoku, użyj poniższego dla białego tekstu na pasku stanu w ViewDidLoad:
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
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
2016-02-17 13:20:54
Kluczem do tego jest to, że tylko kontroler widoku pełnoekranowego może dyktować styl paska stanu.
Jeśli używasz kontrolera nawigacyjnego i chcesz kontrolować pasek stanu na podstawie kontrolera widoku, będziesz chciał podklasować UINavigationController i zaimplementować preferredStatusBarStyle tak, aby zwracał preferencje topViewController.
Upewnij się, że zmienisz odniesienie do klasy w scenie storyboard zuinavigationcontroller na swoje podklasa (np. MyNavigationController w przykładzie poniżej).
(poniższe działa dla mnie. Jeśli Twoja aplikacja jest oparta na Tabbarze, będziesz chciał zrobić coś podobnego, podklasując UITabBarController, ale nie próbowałem tego).
@interface MyNavigationController : UINavigationController
@end
@implementation MyNavigationController
- (UIStatusBarStyle)preferredStatusBarStyle
{
return self.topViewController.preferredStatusBarStyle;
}
@end
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-10-16 18:21:41
Aby podsumować, Edytuj swój projekt Info.plist
i dodaj:
View controller-based status bar appearance
: NO
Status bar style
: Opaque black style
Lub jeśli masz surowy klucz / wartość plist
UIViewControllerBasedStatusBarAppearance
: NO
UIStatusBarStyle
: Opaque black style
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
2014-10-08 14:17:14