2017-06-04 14 views
5

コンテナビューコントローラと子ビューコントローラ(UITabViewControllerと同様)があります。 1つのビューコントローラのビューと別の子View Controllerのビュー間を移行するとき、私が使用しています:移行後のサブビュートランジションのサイズ変更

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) 

ここでの問題は、遷移アニメーションが完了した後newViewのサイズ変更は見苦しいに見えるれ、起こるということです。

この悪い動作は、新しい子ビューコントローラが最初にのにロードされたときにのみ発生します。 viewDidLayoutSubviewsメソッドは、トランジションの後にのみ呼び出されるようです。

移行前と変更後にnewViewをサイズ変更する方法を教えてください。

ありがとうございました。あなたのViewControllerオーバーライドfunc viewWillTransition

+0

のようなものになります。私はちょうどそれをテストした。詳細なコードを表示する必要があります。特に、子ビューコントローラを追加して設定するコードが必要です。 – Mischa

+0

(新しい)子ビューコントローラのビューをコンテナのサイズに合わせてどのようにサイズ変更しますか? – Mischa

+0

あなたは 'func viewWillTransition(サイズ:CGSize、コーディネータ:UIViewControllerTransitionCoordinator)' をオーバーライドして、その内部にトランジションを追加しましたか? –

答えて

2

ので、移行自体は自動レイアウトで正常に動作します。この

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

このメソッドは、スクリーンが横または縦のモードに回転している場合にも呼び出されることを忘れないでください。 –

+0

警告のおかげで、私はそれを言及すべきでした。 –

関連する問題