it-swarm.com.de

So ändern Sie die Textfarbe der Statusleiste in iOS

Meine Anwendung hat einen dunklen Hintergrund, aber in iOS 7 wurde die Statusleiste transparent. Ich kann dort also nichts sehen, nur die grüne Batterieanzeige in der Ecke. Wie kann ich die Textfarbe der Statusleiste wie auf dem Startbildschirm in Weiß ändern?

965
  1. Setzen Sie UIViewControllerBasedStatusBarAppearance in der .plist-Datei auf YES.

  2. Im viewDidLoad mache einen [self setNeedsStatusBarAppearanceUpdate];

  3. Fügen Sie die folgende Methode hinzu:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    

Hinweis : Dies funktioniert nicht für Controller innerhalb von UINavigationController, siehe Tysons Kommentar unten :)

Swift 3 - Dies funktioniert mit Controllern in UINavigationController. Fügen Sie diesen Code in Ihren Controller ein.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Swift 5 und SwiftUI

Für SwiftUI erstelle eine neue Swift Datei mit dem Namen HostingController.Swift

import Foundation
import UIKit
import SwiftUI

class HostingController: UIHostingController<ContentView> {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Ändern Sie dann die folgenden Codezeilen in dem SceneDelegate.Swift

window.rootViewController = UIHostingController(rootView: ContentView())

zu

window.rootViewController = HostingController(rootView: ContentView())
1346
Peter B. Kramer

Alternativ können Sie die Darstellung der Statusleiste auf der Basis des View-Controllers deaktivieren:

  1. Setzen Sie View controller-based status bar appearance in Ihrem Info.plist auf NO.
  2. Rufe [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; an

Hinweis: Diese Methode ist in iOS9 veraltet. Verwenden Sie stattdessen preferredStatusBarStyle auf dem UIViewController. (siehe Apple Developer Library )

843
wilsontgh

Sie können dies tun, ohne eine Codezeile zu schreiben!
Gehen Sie wie folgt vor, um die Textfarbe der Statusleiste in der gesamten App weiß zu machen

Auf Sie Projektliste Datei:

  • Statusleistenstil: Transparent black style (alpha of 0.5)
  • Anzeigen des Aussehens der controller-basierten Statusleiste: NO
  • Die Statusleiste ist zunächst ausgeblendet: NO
433
Lucas

Hinweis: Die meisten Antworten funktionieren nicht mit iOS 7/8

Setzen Sie in der Info.plist 'Controller-basierte Statusleiste anzeigen' auf NO

In AppDelegate hinzufügen

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

zu

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    

Diese Lösung funktioniert für iOS 7/8

240
Pradeep Mahdevu

Für mich passierte nichts mit der Verwendung aller Dinge in den anderen Antworten (und aus anderen Quellen/Dokumentationen). Was geholfen hat, war, den Navigationsleistenstil im XIB auf "Schwarz" zu setzen. Dadurch wurde der Text ohne Code in Weiß geändert.

Enter image description here

110
haraldmartin

Nichts davon hat bei mir funktioniert, also hier ist eine funktionierende Lösung ...

Fügen Sie in Info.plist eine Zeile hinzu:

UIViewControllerBasedStatusBarAppearance und stellen Sie den Wert NO ein.

Fügen Sie dann in AppDelegate in didFinishLaunchingWithOptions diese Zeilen hinzu:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
97
stepik21

Sie müssen keinen Code dafür machen

Sie müssen den folgenden Schlüssel in info.plist hinzufügen: enter image description here

& Setzt seinen Werttyp auf Boolean & Wert auf NO. Klicken Sie dann auf Projekteinstellungen und dann auf die Registerkarte Allgemein. Setzen Sie unter Bereitstellungsinformationen den bevorzugten Statusleistenstil auf.

enter image description here

Das ist es.

61
Ajinkya Patil

Nur zwei Schritte wie folgt:

Schritt 1:

Auf der Registerkarte Info des project target Zeile hinzufügen:

UIViewControllerBasedStatusBarAppearance, Wert NO einstellen.

Schritt 2:

Im Projekt AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}
48
folse

Dies funktioniert in Golden Master iOS 7 und Xcode 5 GM seed und iOS7 SDK, die am 18. September 2013 veröffentlicht wurden (zumindest mit ausgeblendetem Navigationscontroller):

  1. Setzen Sie the UIViewControllerBasedStatusBarAppearance in Info.plist auf NO.

  2. In der ViewDidLoad -Methode oder irgendwo, wo möchten Sie den Statusleistenstil ändern: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

43
Deniss Fedotovs

Befindet sich Ihr UIViewController in einem UINavigationController, müssen Sie den BarStyle einstellen:

-[UINavigationBar setBarStyle:UIBarStyleBlack]

Die ursprüngliche Antwort ist hier

https://devforums.Apple.com/message/844264#844264

32
Mohit Padalia

Wenn Sie einen eingebetteten Navigationscontroller mit Interface Builder erstellt haben, müssen Sie in einer Klasse, die Ihren Navigationscontroller verwaltet, Folgendes festlegen:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

Das sollte alles sein, was du brauchst.

29
matt bernardo

Ich verwende Xcode 6 Beta 5 in einem Swift Projekt für eine iOS 7 App.

Folgendes habe ich getan und es funktioniert:

info.plist:

Enter image description here

27
fancoolo

Fügen Sie in AppDelegate.m Folgendes hinzu.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 

Setzen Sie in der Plist-Datei die Option "Controller-basierte Statusleiste anzeigen" auf "Nein".

22
neo D1
  1. Gehe zu Project -> Target,

  2. Stellen Sie dann Status Bar Style auf Light. Die Statusleiste wird auf dem Startbildschirm weiß. Project Setting

  3. Setzen Sie dann View controller-based status bar appearance gleich NO in Info.plist.

20
Wanbok Choi

Nun, das funktioniert wirklich wie ein Kinderspiel für mich.

Gehen Sie zu info.plist Ihrer App.

  1. Setzen Sie View controller-based status bar appearance auf NO
  2. Setzen Sie Status bar style auf UIStatusBarStyleLightContent

Gehen Sie dann zum Vertreter Ihrer App und fügen Sie den folgenden Code ein, in dem Sie den RootViewController Ihres Windows festlegen.

#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. Es funktioniert für mich.

20
Shahid Iqbal

Einfach in Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
20
Vivek Sehrawat

Change in info PLIST In Swift 3 geht das ganz einfach mit 2 Schritten. Gehen Sie zu Ihrer info.plist und ändern Sie den Schlüssel View controller-based status bar appearance auf "NO". Dann fügen Sie im Appdelegate einfach diese Zeile in didfinishlaunchingwithoptions hinzu

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }

in iOS9 ist dies veraltet. Jetzt sollten Sie diese Eigenschaft im rootviewcontroller überschreiben

wenn dies in iOS 9 veraltet ist, sollte dies auf dem rootviewcontroller erfolgen

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }
18
James Rochabrun

mit iOS 7 können einzelne Ansichtscontroller das Erscheinungsbild der Statusleiste bestimmen, wie in der Entwicklerdokumentation Apple beschrieben:

mit iOS 7 können Ansichtscontroller den Stil der Statusleiste anpassen, während die App ausgeführt wird. Eine gute Möglichkeit, den Statusleistenstil dynamisch zu ändern, besteht darin, preferredStatusBarStyle zu implementieren und - innerhalb eines Animationsblocks - das Erscheinungsbild der Statusleiste zu aktualisieren und setNeedsStatusBarAppearanceUpdate aufzurufen.

Das globale Festlegen des Statusleisten-Erscheinungsbilds erfolgt in zwei Schritten.

Zunächst müssen Sie iOS mitteilen, dass Sie das Erscheinungsbild der Statusleiste nicht von Ansicht zu Ansicht festlegen möchten.

Dann müssen Sie die Verantwortung übernehmen und den neuen globalen Statusleistenstil festlegen.

Um die Ansicht-für-Ansicht-Statusleistensteuerung zu deaktivieren, müssen Sie die Eigenschaft View controller-based status bar appearance in Info.plist festlegen.

Öffnen Sie den Projektnavigator, wählen Sie das Projekt für Ihre iOS-App aus und klicken Sie dann auf die Registerkarte Info.

Bewegen Sie den Mauszeiger über eine Zeile und klicken Sie auf das angezeigte Pluszeichen, um Ihrem .plist eine neue Eigenschaft hinzuzufügen.

Geben Sie View controller-based status bar appearance in das Feld Schlüssel ein und vergewissern Sie sich, dass das Feld Typ auf Boolean eingestellt ist. Geben Sie abschließend im Feld Wert NO ein.

Um einen globalen Stil für die Statusleiste festzulegen, fügen Sie auf der Registerkarte Info eine weitere Eigenschaft mit dem Schlüssel Status bar style, dem Typ String und dem Wert Opaque black style hinzu.

Hier ist ein Blog-Beitrag mit etwas mehr Details und einigem Beispielcode:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

17
Josh Earl

Du musst kein Extra machen, schreibe einfach diesen Code in deinen viewController und erhalte die Statusleistenfarbe Weiß

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
12
Mohit tomar

Antwort aktualisiert für für Xcode GM Seed:

  1. In Info.plist setzen View controller-based status bar appearance als NO

  2. Legen Sie im Projekt Folgendes fest:

    Enter image description here

  3. In ViewDidLoad:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

12
parilogic

Ich denke, dass alle Antworten nicht wirklich auf das Problem hinweisen, da sie alle in bestimmten Szenarien funktionieren. Wenn Sie jedoch alle Fälle abdecken müssen, befolgen Sie die folgenden Punkte:

Abhängig davon, wo Sie den Lichtstil der Statusleiste benötigen, sollten Sie immer diese 3 Punkte beachten:

1) Wenn Sie die Statusleiste auf dem Startbildschirm oder an anderen Stellen benötigen, an denen Sie sie nicht steuern können (nicht in View Controllern, sondern in einigen systemgesteuerten Elementen/Momenten wie dem Startbildschirm) ) Sie gehen zu Ihren Projekteinstellungen Project settings

2) Wenn Sie einen Controller in einem Navigationscontroller haben Sie können ihn im Interface Builder wie folgt ändern:

a) Wählen Sie die Navigationsleiste Ihres Navigationscontrollers Select the navigation bar of your navigation controller

b) Setzen Sie dann den Stil der Navigationsleiste auf "Schwarz", da dies bedeutet, dass Sie unter Ihrer Statusleiste einen "schwarzen" -> dunklen Hintergrund haben, sodass die Statusleiste auf Weiß gesetzt wird

enter image description here

Oder machen Sie es im Code wie folgt

navigationController?.navigationBar.barStyle = UIBarStyle.Black

3) Wenn Sie nur den Controller haben, der seinen eigenen Statusleistenstil haben muss und nicht als UINavigationController in eine Container-Struktur eingebettet ist

Legen Sie den Statusleistenstil im Code für den Controller fest:

Setting the status bar style in code

11
Fawkes

Einfach anrufen

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

in dem

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

die Methode meines AppDelegate funktioniert in iOS7 hervorragend.

10

Hier finden Sie Apple Guidelines/Instruction Informationen zum Ändern der Statusleiste. In der Statusleiste ist nur dunkles Licht (solange schwarz) zulässig.

So ändern Sie den Statusleistenstil:

Wenn Sie den Statusleistenstil festlegen möchten, setzen Sie die Anwendungsebene in Ihrer .plist-Datei auf UIViewControllerBasedStatusBarAppearance auf NO.

wenn Sie den Statusleistenstil festlegen möchten, gehen Sie auf Ansichts-Controller-Ebene folgendermaßen vor:

  1. Setzen Sie UIViewControllerBasedStatusBarAppearance in der Datei .plist auf YES, wenn Sie den Statusleistenstil nur auf UIViewController-Ebene festlegen müssen.
  2. In der viewDidLoad Funktion hinzufügen - setNeedsStatusBarAppearanceUpdate

  3. überschreiben Sie preferredStatusBarStyle in Ihrem Ansichtscontroller.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Stellen Sie den Wert von .plist entsprechend der Setup-Ebene für den Statusleistenstil ein. enter image description here


Hier ist ein kniffliger Trick, um die Hintergrundfarbe für die Statusleiste während des Starts der Anwendung oder während viewDidLoad Ihres View Controllers zu ändern/festzulegen.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Hier ist das Ergebnis:

enter image description here

9
Krunal

Dies ist im iOS 7 UI Transition Guide dokumentiert. Für den direkten Zugriff benötigen Sie eine Apple Entwickler-ID. Der relevante Auszug:

Da die Statusleiste transparent ist, wird die Ansicht dahinter durchgehend angezeigt. [...] Verwenden Sie eine UIStatusBarStyle -Konstante, um festzulegen, ob der Inhalt der Statusleiste dunkel oder hell sein soll:

UIStatusBarStyleDefault zeigt dunklen Inhalt an. [...]

UIStatusBarStyleLightContent zeigt den Lichtinhalt an. Verwenden Sie diese Option, wenn sich dunkler Inhalt hinter der Statusleiste befindet.

Möglicherweise auch von Interesse:

In iOS 7 können Sie den Stil der Statusleiste von einem einzelnen vew-Controller aus steuern und ändern, während die App ausgeführt wird. Um dieses Verhalten zu aktivieren, fügen Sie den UIViewControllerBasedStatusBarAppearance -Schlüssel zur Info.plist -Datei einer App hinzu und geben Sie den Wert YES ein.

Ich würde auf jeden Fall empfehlen, sich das Dokument anzusehen, auf das Sie wiederum mit Ihrer Entwickler-ID Apple zugreifen können.

9
Aaron Miller

Wenn Sie dasselbe Ergebnis mit Swift erzielen möchten, können Sie diesen Code in Ihrer AppDelegate.Swift-Datei verwenden:

UINavigationBar.appearance().barStyle = .BlackTranslucent

Und der Text Ihrer Statusleiste wird weiß sein :-)!

8
fraxool

Wenn Sie weiterhin View controller-based status bar appearance in info.plist auf YES setzen möchten, was bedeutet, dass Sie die Statusleiste für jeden View-Controller ändern können, verwenden Sie für weißen Text in der Statusleiste in ViewDidLoad Folgendes:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
8
eirik

Ich habe einige Dinge anders gemacht und es funktioniert für mich.

Ohne Codeänderungen habe ich meine .plist-Datei folgendermaßen konfiguriert:

  • Anzeigen des Aussehens der controller-basierten Statusleiste> NEIN
  • Statusleistenstil> UIStatusBarStyleLightContent (einfache Zeichenfolge)

Ich hoffe, es hilft.

bearbeiten

Für jeden View-Controller ändere ich die Eigenschaft "Simulierte Metriken" der Statusleiste im Storyboard von "abgeleitet" in "Lichtinhalt".

in der info.plist setzen Sie den Feldwert NO Anzeige der controller-basierten Statusleiste und setzen Sie Statusleiste style light in target> general setting.

7
parvind

Lassen Sie mich Ihre Frage vollständig beantworten. Das Ändern der Textfarbe in der Statusleiste ist sehr einfach, in iOS 7 jedoch etwas verwirrend, insbesondere für Anfänger.

Wenn Sie versuchen, die Farbe in Storyboard von Schwarz auf Weiß zu ändern, indem Sie den Ansichts-Controller auswählen und auf der rechten Seite auf Simulierte Metriken klicken, funktioniert dies nicht und ich weiß nicht warum. Es sollte so funktionieren, aber wie auch immer.

Zweitens finden Sie die UIViewControllerBasedStatusBarAppearance-Eigenschaft nicht in Ihrer Liste, sie ist jedoch standardmäßig nicht vorhanden. Sie müssen es selbst hinzufügen, indem Sie auf die Schaltfläche + klicken und dann auf NEIN setzen.

iOS 7 Statusleiste Textfarbe

Zuletzt müssen Sie zu Ihrer AppDelegate.m-Datei gehen und die folgende Zeile in die didFinishLaunchingWithOptions-Methode einfügen:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Dadurch wird die Farbe für alle Ihre View-Controller in Weiß geändert. Hoffe das hilft!

7

Fügen Sie in Plist Folgendes hinzu:

  • Statusleistenstil: UIStatusBarStyleLightContent
  • Anzeigen des Aussehens der controller-basierten Statusleiste: NO
7
Ramdhas

Um es zusammenzufassen, bearbeite dein Projekt Info.plist und füge hinzu:

View controller-based status bar appearance: NO

Status bar style: Opaque black style

oder wenn Sie rohen Schlüssel/Wert Plist haben

UIViewControllerBasedStatusBarAppearance: NO

UIStatusBarStyle: Opaque black style

6
budidino

Der Schlüssel dazu ist, dass nur der Vollbild-Ansichts-Controller den Stil der Statusleiste bestimmt.

Wenn Sie einen Navigationscontroller verwenden und die Statusleiste auf Sichtcontrollerbasis steuern möchten, sollten Sie UINavigationController in Unterklassen unterteilen und preferredStatusBarStyle so implementieren, dass die Einstellungen von topViewController zurückgegeben werden.

Stellen Sie sicher, dass Sie die Klassenreferenz in Ihrer Storyboard-Szene von UINavigationController in Ihre Unterklasse ändern (z. B. MyNavigationController im folgenden Beispiel).

(Das Folgende funktioniert für mich. Wenn Ihre App auf TabBar basiert, möchten Sie etwas Ähnliches tun, indem Sie den UITabBarController in Unterklassen unterteilen, aber ich habe das nicht ausprobiert.).

@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return self.topViewController.preferredStatusBarStyle;
}

@end
6
Juddster

Für Xcode 5.1:

Hinzufügen von " Anzeigen des Aussehens der controller-basierten Statusleiste " zu NO in der .plist.

Fügen Sie in AppDelegate Folgendes hinzu:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Das ist alles!

5

Sie können dies von info.plist aus tun:

1) "Controller-basierte Statusleiste anzeigen" auf "NEIN" gesetzt

2) "Statusleistenstil" auf "UIStatusBarStyleLightContent" gesetzt

getan

4
Dima Deplov

Setzen Sie in der Info.plist 'Controller-basierte Statusleiste anzeigen' auf NO

In AppDelegate hinzufügen

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
4
Patel Jigar

Swift 3 - Xcode 8.

Wenn Sie möchten, dass die Statusleiste auf dem Startbildschirm anfangs ausgeblendet ist, versuchen Sie Folgendes:

Schritt 1: Füge folgendes zu info.plist hinzu.

  • View controller-based status bar appearance Wert NO
  • Status bar is initially hidden Wert YES

Schritt 2: Schreibe dies in die didFinishLaunchingWithOptions Methode.

UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
3
Zaid Pathan

Wenn Ihre Anwendung standardmäßig UIStatusBarStyleLightContent haben muss, Sie aber dennoch UIStatusBarStyleDefault auf einigen Bildschirmen verwenden möchten, können Sie die Farbe der Statusleiste auf Controllerebene verwalten In diesem Fall müssen Sie preferredStatusBarStyle in jedem Ansichtscontroller überschreiben (oder in einem Basisansichtscontroller implementieren, von dem alle anderen Ansichtscontroller erben). Hier ist eine andere Möglichkeit, dieses Problem zu lösen:

  • Stellen Sie das UIViewControllerBasedStatusBarAppearance in der Liste auf NO
  • Stellen Sie UIStatusBarStyle auf UIStatusBarStyleLightContent

Alle Ansichtscontroller verwenden weißen Text für die Statusleiste. Fügen Sie diese Methoden jetzt nur in den Ansichtscontrollern hinzu, die die Statusleiste mit schwarzem Text benötigen:

-(void)viewWillAppear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}    

-(void)viewWillDisappear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}    
3

Der einfachste Weg, dies von Xcode aus (ohne jegliche Codierung) zu tun, ist:

  • Fügen Sie Ihrer Info.plist View controller-based status bar appearance hinzu und setzen Sie den Wert auf NO.
  • Gehen Sie nun zu Ihrem Projektziel und in Deployment Info finden Sie eine Option für Status Bar Style. Setzen Sie den Wert dieser Option auf Light.

Sie haben die Statusleiste White.

3
Mahendra Liya

Ich mache dies in iOS 9 und Swift 2.0, wenn ich UINavigationController verwende

self.navigationController?.navigationBar.barStyle = UIBarStyle.Black

Und das mache ich, wenn ich Modal Segue benutze

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}
3

In iOS 8: NavigationController.NavigationBar.BarStyle = UIBarStyle.Black; zu viewDidLoad hinzufügen

3
S. Matsepura
  • Löschen Sie das Controller-basierte Statusleisten-Erscheinungsbild anzeigen in der .plist-Datei (falls Sie es erstellt haben) und erstellen Sie es erneut.

  • setzen Sie Status Bar Style auf Opaque Black Style

Fügen Sie in appDelegate den folgenden Code unter didFinishLaunching hinzu.

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
2
VarshaSai

Dies scheint ein Problem mit dem aktuellen Build von Xcode und iOS 7 zu sein.

Einige verwandte Inhalte in Apples Entwicklerforen befinden sich in eine Suche nach UIStatusBarStyleLightContent in "iOS 7 Beta Livability" in den Apple Entwicklerforen * (derzeit 32 Beiträge).

Ich bin darauf gestoßen und habe versucht, es auf die Light-Version einzustellen.

(Dies ist nur eine Fortsetzung von Aarons Antwort.)

2
AlastairDewar

Das hat bei mir funktioniert:

  1. Stellen Sie UIViewControllerBasedStatusBarAppearance in YES auf plist

  2. Die rootViewController benötigt die Methodenimplementierung für

    -(UIStatusBarStyle)preferredStatusBarStyle
    

Da mein rootViewController von Cocoapods verwaltet wird (JASidePanelController), habe ich diese Methode über eine Kategorie hinzugefügt:

#import "JASidePanelController+StatusBarStyle.h"

@implementation JASidePanelController (StatusBarStyle)

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

@end
2
Paul

Ändern Sie einfach 1)Info.plist Controller-basierte Statusleiste anzeigen appearance -> NO und schreiben Sie 2)

  [[UIApplication
 sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]; 

im

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2
IOS developer

ändern Sie die Textfarbe der Statusleiste für alle ViewController

Swift

if Controller-basiertes Statusleisten-Erscheinungsbild anzeigen = YES in Info.plist

verwenden Sie dann diese Erweiterung für alle NavigationController

extension UINavigationController
{
    override open var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
     }
 }

wenn es keinen UINavigationController gibt und nur über UIViewController verfügt, verwenden Sie den folgenden Code:

extension UIViewController
{
    override open var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
     }
 }

Ziel C

kategorie Klasse erstellen

Für UIViewController

In UIViewController + StatusBarStyle.h

 @interface UIViewController (StatusBarStyle)
 @end

In UIViewController + StatusBarStyle.m

 #import "UIViewController+StatusBarStyle.h"

 @implementation UIViewController (StatusBarStyle)
 -(UIStatusBarStyle)preferredStatusBarStyle
 {
  return UIStatusBarStyleLightContent;
 }
 @end 

Für UINavigationController

In UINavigationController + StatusBarStyle.h

 @interface UINavigationController (StatusBarStyle)
 @end

In UINavigationController + StatusBarStyle.m

 #import "UINavigationController+StatusBarStyle.h"

 @implementation UINavigationController (StatusBarStyle)
 -(UIStatusBarStyle)preferredStatusBarStyle
 {
  return UIStatusBarStyleLightContent;
 }
 @end  
2
Datt Patel

Sie können dies für iOS 6 und 7 verwenden:

#ifdef __IPHONE_7_0
# define STATUS_STYLE UIStatusBarStyleLightContent
#else
# define STATUS_STYLE UIStatusBarStyleBlackTranslucent
#endif

[[UIApplication sharedApplication] setStatusBarStyle:STATUS_STYLE animated:YES];
1

Wenn Sie unter iOS 7 UIViewControllerBasedStatusBarAppearance == YES verwenden möchten und Ihr Stammansichts-Controller UINavigationController ist, sollten Sie eine Unterklasse festlegen und childViewControllerForStatusBarStyle wie folgt überladen:

- (UIViewController*) childViewControllerForStatusBarStyle
{
    return self.viewControllers.lastObject;
}

Anschließend wird preferredStatusBarStyle auf Push-View-Controllern aufgerufen.

1
poGUIst

Bitte versuchen Sie dies

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    [application setStatusBarHidden:NO];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = [UIColor blackColor];
    }
1
Karthickkck

Was ich für Swift und den Navigationscontroller tun musste

extension UINavigationController {
    override open var preferredStatusBarStyle: UIStatusBarStyle {
       return .lightContent
    }   
}
0
Cmar

Wenn Sie eine beliebige Farbe festlegen möchten, verwenden Sie den folgenden Code.

id statusBarWindow = [[UIApplication sharedApplication] valueForKey:@"statusBarWindow"];
id statusBar = [statusBarWindow valueForKey:@"statusBar"];

SEL setForegroundColor_sel = NSSelectorFromString(@"setForegroundColor:");
if([statusBar respondsToSelector:setForegroundColor_sel]) {
    // iOS 7+
    [statusBar performSelector:setForegroundColor_sel withObject:YourColorHere];
                                                                 ^^^^^^^^^^^^^
}

Ich weiß, dass ich auf die private API zugreife, aber ich habe dies in vielen Projekten verwendet und Apple habe es genehmigt.

Senden Sie diesen Code erst beim Senden der App an Apple im Abschnitt "Kommentare" und teilen Sie mit, dass Sie diesen Code verwenden, um die Farbe der Statusleiste zu ändern.

Und ja , vergiss auch nicht unten.

0
Fahim Parkar