2017-06-04 8 views
5

Ich habe einen Container-View-Controller und Kind View-Controller (ähnlich UITabViewController). Wenn zwischen der Sicht eines Kindes View-Controller-Übergang und eine andere Ansicht des Kindes View-Controller, ich bin mit:SubView Übergang Größenänderung nach dem Übergang

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) 

Das Problem hier ist, dass die Änderung der Größe der NewView passiert, nachdem der Übergang Animation abgeschlossen ist, was unansehnlich aussieht.

Dieses fehlerhafte Verhalten tritt nur auf, wenn der neue untergeordnete Ansichtscontroller zum ersten Mal geladen wird. Es scheint, dass die Methode viewDidLayoutSubviews nur nach dem Übergang aufgerufen wird.

Wie bekomme ich die NewView vor dem Übergang und nicht nach der Größe geändert werden.

Dank Im Voraus.

+0

Der Übergang selbst mit Auto-Layout funktioniert gut sein. Ich habe das gerade getestet. Sie müssen mehr von Ihrem Code anzeigen - insbesondere den Code, in dem Sie die untergeordneten Ansicht-Controller hinzufügen und einrichten. – Mischa

+0

Wie wird die Größe der Ansicht des (neuen) untergeordneten Ansicht-Controllers an die Größe des Containers angepasst? – Mischa

+0

Haben Sie versucht, 'func viewWillTransition (Größe: CGSize, mit Koordinator: UIViewControllerTransitionCoordinator)' zu überschreiben und fügen Sie Ihre Transition darin ein? –

Antwort

2

in Ihrer ViewController Überschreibung func viewWillTransition so wird es so etwas wie diese

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

Vergessen Sie nicht, dass diese Methode auch aufgerufen wird, wenn der Bildschirm in Quer- oder Hochformat gedreht wird. –

+0

danke für die Warnung, ich hätte das erwähnen sollen. –

Verwandte Themen