web-dev-qa-db-fra.com

PreferredStatusBarStyle var ne fonctionne pas dans iOS12?

Ajouter

application.statusBarStyle = .lightContent

à la méthode didFinishLaunchingWithOptions de mon AppDelegate, ni en ajoutant

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}

au VC ne fonctionne plus sur iOS12/Xcode10

Des idées?

10
Nostradamus

Si vous choisissez une même couleur de barre d'état pour chaque contrôleur de vue:

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

Ajoutez ceci à votre Info.plist et définissez la couleur de la barre d'état dans Projet -> Cibles -> Style de la barre d'état par la couleur souhaitée.

D'un autre côté, dans votre cas, vous avez un contrôleur de navigation qui est intégré dans un contrôleur de vue. Par conséquent, vous souhaitez changer la couleur de la barre d'état pour chaque page.

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

Ajoutez ceci à votre Info.plist. Ensuite, créez une classe personnalisée pour votre NavigationController. Après cela, vous pouvez implémenter la méthode:

class LightContentNavigationController: UINavigationController {

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

C'est ça! Veuillez m'informer si cela a été utile!

16
Oliver

Cela n'a rien à voir avec iOS 12. Vous avez juste des règles erronées.

Dans une situation de contrôleur de navigation, la couleur de la barre d'état n'est pas déterminée par le preferredStatusBarStyle du contrôleur de vue.

Il est déterminé, étonnamment, par la barre de navigation barStyle. Pour obtenir un texte de barre d'état clair, dites (dans votre contrôleur de vue):

self.navigationController?.navigationBar.barStyle = .black

Difficile à croire, mais vrai. J'ai reçu cette information directement d'Apple, il y a des années.

Vous pouvez également effectuer ce réglage dans le storyboard.

Exemple! Le style de barre de la barre de navigation est .default:

enter image description here

Le style de barre de la barre de navigation est .black:

enter image description here

REMARQUE pour iOS 13 Cela fonctionne toujours dans iOS 13 tant que vous n'utilisez pas de grands titres ou UIBarAppearance. Mais fondamentalement, vous êtes censé cesser de le faire et laisser la couleur de la barre d'état être automatique par rapport au choix du mode clair ou sombre de l'utilisateur.

43
matt