Barre grise apparaissant sous la barre de navigation après seiges Swift

Une barre grise exactement la taille de ma barre de navigation + barre d'état apparaît sous ma barre de navigation lorsque je me lance dans le VC spécifique. Dans un autre VC, la barre grise n'est pas là à less que j'ouvre Youtube puis j'utilise le button iOS 9 "return à 'App'".

Voici à quoi cela ressemble:

entrez la description de l'image ici

Comme vous pouvez le voir sur l'image, la barre grise ne couvre pas le YTPlayerView, mais le fait glisser vers le bas.

Qu'est-ce qui se passe ici?

MODIFIER

J'ai ajouté la hiérarchie de vue pour plus de clarté.

entrez la description de l'image ici

MODIFIER

J'ai ajouté les contraintes pour YTPlayerView en question.

entrez la description de l'image ici

MODIFIER

La contrainte au top guide est 0

entrez la description de l'image ici

Je ne comprends pas complètement le problème ici, mais il semble avoir été une question de hiérarchie de vue?

entrez la description de l'image ici

C'était la hiérarchie imparfaite; J'ai changé la couleur de la stackView pour voir si c'était le coupable mais ce n'était pas le cas.

J'ai fait d'autres tests et j'ai découvert que le problème était contenu dans YTPlayerView .

entrez la description de l'image ici

YTPlayerView commencé en incluant l'espace gris, mais après être allé sur Youtube.com dans Safari, en utilisant la fonction iOS 9 "Back to App", la barre grise a enfoncé la vue en elle-même.

Ce qui a finalement résolu ce problème consiste simplement à YTPlayerView le YTPlayerView plus bas dans la hiérarchie comme ceci:

entrez la description de l'image ici

La barre grise n'apparaît plus après l'utilisation de la fonction "Retour à l'application".

J'ai déjà eu un problème similaire. Ce n'est pas lié à l'utilisation de segues. le problème est très probablement lié aux contraintes que vous utilisez. Définissez la contrainte supérieure de YTPlayerView par rapport au top layout guide au lieu de top of superview (ce que vous avez peut-être déjà fait). Je ne peux pas spécifiquement dire une solution à ce problème à less de connaître les contraintes que vous avez fournies. Fournir des contraintes par rapport à la partie supérieure de la super vue provoque ce type de problème lorsque vous affichez un controller de vue et le supprimez, ce qui est similaire à l'action que vous effectuez avec IOS 9 pour revenir à l'option de l'application. Essayez simplement avec la contrainte que j'ai mentionnée et si cela ne résout pas le problème, essayez de donner quelques détails sur les contraintes que vous utilisez.

MODIFIER

Pour être plus précis, vous devez maintenant définir la contrainte supérieure de YTPlayerView comme une distance fixe (qui est égale à la hauteur de la barre de navigation plus la barre d'état, 64px je suppose) en haut de la vue supérieure, qui est le vue du ViewController . Cela doit être changé et la contrainte supérieure doit être définie sur 0px dans le top layout guide . Ceci devrait régler votre problème.

EDIT 2

Comme vous rencontrez toujours des problèmes, essayez de connecter l'object IBOutlet de la contrainte supérieure à ViewController, puis dans la méthode viewDidAppear du controller de viewDidAppear , réglez-le sur zéro.

Objectif C :

 topConstraint.constant = 0; [self.view layoutSubviews]; 

Swift :

 topConstraint.constant = 0 self.view.layoutSubviews() 

Juste pour confirmer, l'aperçu de la YTPlayerView est de couleur grise non?

Une autre façon dans Swift 3:

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Navigation bar will be black throughout the app UINavigationBar.appearance().barStyle = .blackOpaque return true } 

Votre vue video est étiquetée avec des contraintes à la taille de votre écran ET au rapport 16: 9 que vous voulez pour le stream video. Je peux confirmer que cela crée la barre grise au-dessus du stream video. Vous pouvez essayer sans le format d'image (auquel cas la taille de l'écran se définira).