webentwicklung-frage-antwort-db.com.de

preferredStatusBarStyle var funktioniert nicht in iOS12?

Hinzufügen

application.statusBarStyle = .lightContent

zu meiner AppDelegate-Methode didFinishLaunchingWithOptions noch hinzufügen

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

to the VC funktioniert nicht mehr unter iOS12/Xcode10

Irgendwelche Ideen?

10
Nostradamus

Wenn Sie für jeden View Controller dieselbe Statusleistenfarbe auswählen:

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Fügen Sie dies zu Ihrer Info.plist hinzu und legen Sie die Farbe der Statusleiste unter Projekt -> Ziele -> Statusleistenstil nach gewünschter Farbe fest.

Andererseits haben Sie in Ihrem Fall einen Navigationscontroller, der in einen Ansichtscontroller eingebettet ist. Daher möchten Sie für jede Seite eine andere Farbe in der Statusleiste festlegen.

<key>UIViewControllerBasedStatusBarAppearance</key>
<true/>

Fügen Sie dies Ihrer Info.plist hinzu. Erstellen Sie dann eine benutzerdefinierte Klasse für Ihren NavigationController. Danach können Sie die Methode implementieren:

class LightContentNavigationController: UINavigationController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

Das ist es! Bitte teilen Sie mir mit, ob dies sinnvoll war!

16
Oliver

Dies hat nichts mit iOS 12 zu tun. Sie haben nur die falschen Regeln.

In einer Situation mit einem Navigationscontroller wird die Farbe der Statusleiste nicht durch das preferredStatusBarStyle des Ansichtscontrollers bestimmt.

Erstaunlicherweise wird dies durch das barStyle der Navigationsleiste bestimmt. Um Text in der Statusleiste anzuzeigen, sagen Sie (in Ihrem View-Controller):

self.navigationController?.navigationBar.barStyle = .black

Kaum zu glauben, aber wahr. Ich habe diese Informationen vor Jahren direkt von Apple erhalten.

Sie können diese Einstellung auch im Storyboard vornehmen.

Beispiel! Der Balkenstil der Navigationsleiste ist .default:

enter image description here

Der Balkenstil der Navigationsleiste ist .black:

enter image description here

HINWEIS für iOS 13 Dies funktioniert auch unter iOS 13, solange Sie keine großen Titel oder UIBarAppearance verwenden. Grundsätzlich sollten Sie jedoch damit aufhören und die Farbe der Statusleiste in Bezug auf die Auswahl des Hell- oder Dunkelmodus des Benutzers automatisch ändern.

43
matt