web-dev-qa-db-fra.com

Le grand titre de la barre de navigation iOS 11 est de couleur noire lorsque vous appuyez sur le contrôleur de vue pop

J'ai un problème avec la nouvelle barre de navigation pour iOS 11.

Dans la vue racine, définissez une nouvelle navigation par code:

if (@available(iOS 11.0, *)) {
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
}

Ensuite, à partir de la vue racine, j'ai poussé vers une autre vue et défini la barre de navigation de code par

if (@available(iOS 11.0, *)) {
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}

Ça marche bien. Cependant, lorsque la vue Push et pop apparaît, une couleur noire apparaît comme l'image ci-dessous:

enter image description here

Je ne sais pas pourquoi la couleur noire est apparue sur cette vue bien que je n'aie pas reculé pour la barre de navigation est une couleur noire pour tout l'écran dans mon application.

Quelqu'un a une idée du problème. Veuillez m'envoyer quelques suggestions pour résoudre ce bogue. Merci.

18
Cuong Nguyen

J'ai résolu ce problème en définissant la couleur d'arrière-plan du contrôleur de navigation dans la classe UIViewController où je reçois la couleur noire.

Voici le code que j'ai utilisé:

navigationController?.view.backgroundColor = UIColor.white

J'ai essayé de changer les couleurs d'arrière-plan et les ombres dans le story-board, mais cela ne semble pas résoudre ce problème. J'espère que cette réponse est toujours pertinente ici.

26
Sasi Kanth

J'ai résolu ce problème dans ma propre application en sous-classant UINavigationController et en définissant son view.backgroundColor.

9
cook

J'ai résolu ce problème avec une simple extension

extension UINavigationController {

    @IBInspectable var backgroundColor: UIColor {
        set {
            self.view.backgroundColor = newValue;
        }
        get {
            return self.view.backgroundColor ?? UIColor.black;
        }
    }

}

Vous pouvez changer la couleur d'arrière-plan du storyboard!

6