2017-06-04 1 views
5

J'ai un contrôleur de vue de conteneur et des contrôleurs de vue enfant (Similaire à UITabViewController). Lors de la transition entre la vue d'un contrôleur de vue de l'enfant et une autre vue de la vue du contrôleur de l'enfant, je me sers:Redimensionnement de la transition SubView après la transition

let oldView = // get reference to old view 
let newView = // get reference to new view 
UIView.transition(from: oldView!, to: newView!, duration: 0.3, 
        options: .transitionCrossDissolve, completion: nil) 

La question ici, est que le redimensionnement du NewView se produit après l'animation de transition est terminée, ce qui semble disgracieux.

Ce comportement incorrect ne se produit que lorsque le nouveau contrôleur de vue enfant est chargé pour la toute première fois. Il semble que la méthode viewDidLayoutSubviews n'est appelée qu'après la transition.

Comment puis-je redimensionner le fichier newView AVANT la transition et non après.

Merci d'avance.

+0

La transition se fonctionne correctement avec la mise en page Auto. Je viens de tester ça. Vous devez afficher plus de votre code, en particulier le code dans lequel vous ajoutez et configurez le (s) contrôleur (s) de vue enfant. – Mischa

+0

Comment redimensionner la vue du (nouveau) contrôleur de vue enfant pour qu'elle corresponde à la taille du conteneur? – Mischa

+0

avez-vous essayé de remplacer 'func viewWillTransition (à la taille: CGSize, avec le coordinateur: UIViewControllerTransitionCoordinator)' et ajoutez votre transition à l'intérieur de celui-ci? –

Répondre

2

votre ViewController override func viewWillTransition donc ce sera quelque chose comme ça

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    let oldView = // get reference to old view 
let newView = // get reference to new view 
UIView.transition(from: oldView!, to: newView!, duration: 0.3, 
        options: .transitionCrossDissolve, completion: nil) 

} 
+1

ne pas oublier, que cette méthode sera également appelée si l'écran tourne en mode paysage ou portrait. –

+0

merci pour l'avertissement, j'aurais dû le mentionner. –