2017-04-13 7 views
0

別のUIViewをスワップして別のUIViewをスワップして、別のUIViewを追加します。私はトランジションをアニメーション化したいと思いますが、それは簡単なはずですが、問題は追加するビューにレイアウト制約を追加する必要があることです。 (追加したビュー上の制約は、私が削除しています1上のものとは異なる。)UIViewスワップとレイアウト制約のアニメーション

私は制約の変化をアニメーション化するつもりはありませんよ。ビューが正しいサイズで表示され、画面サイズによって正しいサイズが変わるように、それらは適切な位置に配置する必要があります。ビュー階層がまだ設定されていないので、アニメーションブロックに新しい制約を設定する

は明らかにクラッシュします。完成ブロックでそれらを設定するのが遅すぎる - それは追加されますが、新しいビューは間違って来て、次回にビューを更新するまで新しい制約で正しくレイアウトされません。間違っている

UIView.transition(with: containerView, 
        duration: 0.3, 
        options: .transitionCrossDissolve, 
        animations: { 
        self.containerView.addSubview(targetView) 
        self.currentView.removeFromSuperview() 
        }, completion: { _ in 
        self.currentView = targetView 
        self.setupConstraints() 
        }) 

これを回避する方法はありますか?私は何かが欠けているように感じますが、私はドキュメントでそれを見つけることができません。

+0

あなただけのビューを隠し、その後 – Tj3n

答えて

2

すべてのアニメーションが終了したら、あなたは初めにすべてのビューと制約が(例えばtargetViewのためにアルファ= 0に設定)、セットアップ、そしてちょうどアニメーションビューのアルファおよび制約は、不要なビューを削除することができます。

+0

作品完璧に再びそれを示し、最後の行に、それに制約を設定することができます。それを考えていない私の頭の中で自分自身を打つことを想像してみてください!ありがとう。 – i40west

関連する問題