2017-05-09 1 views
1

J'ai un UINavigationController affiché comme un contrôleur de vue enfant prenant une partie de l'écran. Je l'ai présenté à l'aide d'une simple section intégrée, à l'intérieur du storyboard.Comment faire pour étendre UIView passé contenant UINavigationController

Ce rootViewController de UINavigationController a une petite UIView que je souhaite étendre au-delà des limites du conteneur du contrôleur de vue enfant.

Ma hiérarchie ressemble à ceci:

1) Main View 
2) Container Nav Controller 
    3) Root View Controller 
     4) UIView which should extend past the bounds of 2 

J'ai mis clipsToBounds = faux sur toute vue contenant, en vain. Faire un peu de débogage de la vue montre un UINavigationTransitionView entre 2 et 3, avec clipsToBounds = false.

Je suis assez sûr que cela cause le problème (en tant qu'application d'entreprise, cela ne me dérange pas d'utiliser des API privées).

Comment puis-je autoriser la vue à dépasser tous les conteneurs?

+0

Partager du code peut-être? Comment présentez-vous le UINavigationController? – jokeman

+0

Il est présenté en utilisant un segue intégré dans un conteneur; Tout est fait via le storyboard. Je vais éditer pour clarifier, – cdstamper

Répondre

3

Dans le ViewController qui contient le containerView, sous viewDidLoad(), ajoutez le code suivant après avoir créé la sortie du containerView:

let layoutContainerView = self.containerView.subviews.first; 
let navigationTransitionView = layoutContainerView?.subviews.first; 
navigationTransitionView?.clipsToBounds = false; 

C'est un peu hacky, essentiellement la première sous-vue view du navigationController est un UINavigationTransitionView, dans laquelle clipsToBounds = true.