AutolayoutとiOS 9.3をターゲットにして、Xcode 7で作業しています。私は、コンテナビューを保持するメインビューコントローラを持っています。コンテナビューには、子ビューコントローラがあります。Swift:Container回転して再び回転するとレイアウトが変わる
それが水平に完全にメインビューコントローラを覆うようにコンテナビューは、-20の先頭と末尾の制約があります。
ただし、メインビューコントローラが最初に読み込まれるとき、コンテナ内に表示される子ビューコントローラからのコンテンツは、左と右でわずかに切り取られます(ほぼ制約が認識されないかのように)左と右に-20の)。
私は子供ビューコントローラが突然正しくスケールし、もはや左右に遮断され、元の縦向きに再び戻って、その後景観にデバイスを回転させると。
は、だから、横向きに回転装置と、ビューが最初にロードされたときに呼び出されませんので、再び戻ってそれを回転させたときに呼び出されているいくつかのレイアウト方法のように見えます。これはどのような方法ですか?このメソッドを手動で呼び出して、レイアウトとサイズの更新を強制的に実行して、子を最初にロードしたときに、回転と後退と同じように見えるようにする方法はありますか?
コードを表示してください。このような状況では、私のオートレイアウトの経験から、あなたのコードが犯人であると疑う必要があります。そのため、ほとんどの場合、あなたの制約設定はあなたが思うものではなく、コードを見ずにもっと言い表すことはできません。 – lawicko
ビューに対して 'layoutIfNeeded()'を呼び出して、レイアウトの更新をトリガすることができます。あなたが探しているメソッドに関して:回転メソッドを使用していないと仮定すると、向きの変更によってトリガされるメソッドは 'viewWillTransitionToSize:' – sketchyTech
になります。Container ViewのviewDidAppearメソッド内でlayoutIfNeeded()を呼び出そうとしました。私はまた、Child View ControllerのviewDidAppearメソッドでそれを呼び出そうとしましたが、これは効果がありません。 – Stanley