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:
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é.
MODIFIER
J'ai ajouté les contraintes pour YTPlayerView
en question.
MODIFIER
La contrainte au top guide est 0
Je ne comprends pas complètement le problème ici, mais il semble avoir été une question de hiérarchie de vue?
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
.
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:
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).