wake-up-neo.com

Statusleiste mit schwarzem Text, nur beim iPhone 6 iOS 8-Simulator

Ich versuche, meine iOS 7-App in iOS 8 in Xcode 6 GM umzuwandeln, und wenn ich sie auf iPhone 5s oder niedrigeren Simulatoren mit iOS 8 betreibe, ist alles in Ordnung, aber bei den iPhone 6 und 6 Plus-Simulatoren die Statusleiste hat schwarzen Text anstelle von Weiß, wie er sonst immer und überall ist. Ich habe die Info.plist UIStatusBarStyle durch Xcode auf "Transparent Black Style (alpha of 0.5)" gesetzt, und das scheint überall den gewünschten Effekt zu haben. Irgendwelche Ideen, was los ist? 

(Ich habe bisher noch keines der Storyboards berührt. Könnte es etwas damit zu tun haben? Ich hatte gehofft, ich könnte das für eine Weile aufschieben :)

45
Mohamed Hafez

Dieser Fehler tritt nur dann auf, wenn Ihre App an die Auflösung der neueren Geräte angepasst wird.

Eine schnelle Lösung (wer weiß, ob dies überhaupt in 8.1 angesprochen wird), bietet die richtige Auflösung beim Laden von Bildern in Ihrem App-Paket.

Von https://developer.Apple.com/ios/human-interface-guidelines/graphics/launch-screen/

For iPhone 7, iPhone 6s, iPhone 6:

750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape

For iPhone 7 Plus, iPhone 6s Plus, iPhone 6 Plus:

1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape

In meiner App unterstützen wir nur das Portrait. Wenn Sie also 750x1334 und 1242x2208 verwenden, wird dieses Problem behoben.

Um nur zu bestätigen, falls dies nicht offensichtlich war, müssen Sie UIStatusBarStyleLightContent für Ihren Statusleistenstil verwenden.

42
Aaron Wasserman

So habe ich es behoben 

In PLIST Controller-basierte Statusleiste anzeigen NO Statusleistenstil UIStatusBarStyleLightContent

In AppDelegate DidFinishLaunching

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.window setBackgroundColor:[UIColor whiteColor]];

In jedem View Controller

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
50
Taylor Pierce

In iOS 7 funktionierte die Statusleiste meiner App nur mit den Projekt-/Zieleinstellungen:

Status bar style = UIStatusBarStyleLightContent

und

View controller-based status bar appearance = NO

in iOS 8 (iPhone 6 und iPhone 6 Plus-Simulatoren) wurde die Statusleiste jedoch nicht angezeigt. Ändern Sie das Erscheinungsbild der View Controller-basierten Statusleiste in YES und fügen Sie dann Folgendes hinzu:

    // Objective C
    - (UIStatusBarStyle) preferredStatusBarStyle {
         return UIStatusBarStyleLightContent;
    }
    //Swift
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
    }

der ViewController führte dazu, dass die weiße Statusleiste wieder angezeigt wurde, jedoch erst, nachdem der Root-Controller gestartet wurde. Während des ersten Starts bleibt die Statusleiste schwarz.

16
Tony Adams

Eine ähnliche Antwort (derzeit als 2. gewählt) wurde bereits gepostet, um diesen Beitrag auf dem neuesten Stand zu halten, hier die Swift -Version.

  1. Fügen Sie Ihrer info.plist-Datei eine Zeile mit dem Namen Ansicht der Controller-basierten Statusleiste hinzu und setzen Sie den booleschen Wert aufNO.

  2. Fügen Sie in Ihrer AppDelegate.Swift -Datei die folgende Methode hinzu: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { UIApplication.sharedApplication().statusBarStyle = .LightContent return true }

  3. Ich musste diesen Schritt nicht ausführen, damit er funktioniert (d. H. Schritt 1 und 2 und es könnte funktionieren). Falls nicht, versuchen Sie, jedem Ihrer ViewControllers die folgende Methode hinzuzufügen:

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

Ich hoffe das war hilfreich.

Loic

15
Loic Verrall
  1. Öffnen Sie die Info.plist
  2. Fügen Sie eine neue Eigenschaft mit dem Namen "Anzeigen von Controller-basierten Statusleisten" (Boolean) hinzu und setzen Sie den Wert auf "NO".
  3. Fügen Sie eine neue Eigenschaft mit dem Namen "Statusleiste" (String) hinzu, und legen Sie den Wert auf "Schwarz undurchsichtig" fest.

Erledigt.

7
José

Schritt 1: Öffnen Sie die Datei info.plist Ihrer App und setzen Sie UIViewControllerBasedStatusBarAppearance auf NO

Schritt 2: info.plist-Datei Ihrer App und setzen Sie den "Statusleistenstil" auf UIStatusBarStyleLightContent

6
Kakashi

Fügen Sie die folgende Zeile in der didFinishLaunchingWithOptions:-Methode von AppDelegate hinzu

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
6

Könnte ein Problem mit dem Simulator sein. Verwenden Sie diese Option, um die Standardstatusleiste oder Statusleiste für einen bestimmten View-Controller zu überschreiben.

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
} //This is Swift code
3
Saqib Omer

Ich weiß, dass es schlecht ist, das Verhalten in einer Basisklasse mithilfe einer Kategorie zu überschreiben. Dies funktioniert jedoch und kann die schnellste Lösung sein, um das Problem zu beheben.

Schritt 1: Stellen Sie sicher, dass UIViewControllerBasedStatusBarAppearance oder View controller-based status bar appearance in Ihrer Anwendungsplistendatei auf YES gesetzt ist.

Schritt 2: Fügen Sie Ihrem Projekt den folgenden Code hinzu:

@implementation UIViewController (StatusBarColorFix)

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

@end
2
Sandy Chapman

Eine gute Lösung für dieses Problem ist die Verwendung der neuen Laib-Image-Nib-Unterstützung, die bei den iPhone 6-Modellen verwendet wird. Es scheint, als gäbe es in iOS 8 nur einen Fehler, der besagt, dass die iPhone 6-Modelle den Status der Statusleiste beim Starten nicht korrekt überprüfen, jedoch behoben werden, wenn Sie die Startspitze hinzufügen.

Wie Aaron Wasserman hervorgehoben hat, können Sie auch festlegen, dass PNGs für das iPhone 6 und 6+ gestartet werden sollen. Dies scheint auch das Problem zu beheben, sofern Sie sie richtig eingerichtet haben.

1
CMash

Ich habe die folgenden Schritte ausgeführt und sie haben gut für mich gearbeitet, sollte auch unter iOS 8+ arbeiten.

1) Hinzugefügte Eigenschaft Anzeige der Controller-basierten Statusleiste =>NOin Info.plist.
2) Folgender Code in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions von AppDelegate.m hinzufügen.

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.

3) Überschreibungsmethode in ViewController

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
0
Aamir

Für Swift 4 und iOS 11

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}
0
eladHayun

Hier ist Apple-Richtlinien/Anweisungen über Statusleiste/Textfarbenänderung.

Hier ist - So ändern Sie den Stil der Statusleiste:

Wenn Sie den Status der Statusleiste, die Anwendungsebene, einstellen möchten, setzen Sie UIViewControllerBasedStatusBarAppearance in der Datei .plist auf NO.

Oder programmgesteuert von App Delegate aus:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}

wenn Sie den Statusleistenstil festlegen möchten, führen Sie auf Ansichtssteuerungsebene die folgenden Schritte aus:

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

  3. Überschreiben Sie preferredStatusBarStyle in Ihrem View-Controller.

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Legen Sie den Wert für .plist gemäß der Setup-Ebene für Statusleisten fest enter image description here

0
Krunal

Wählen Sie in Ihrem Storyboard Ihren Root-View-Controller aus, und legen Sie den Standardtyp für die Statusleiste fest

0
Shafraz Buhary