2017-07-28 6 views
0

ナビゲーションコントローラをその子として、最上位にUITabBarControllerを持つアプリケーションを作成しています。私がタブから最初の画面に移行すると、VC.viewのフレームは(0.0、0.0、375.0、618.0)であり、別のVCに切り替えると、そのVCのVC.viewのフレームは(0.0、0.0、375.0 、667.0)。違いは49なので、TabBarの高さが最初に考慮されているが、これをスタックにさらに適用しないため、これが仮定されています。私はこれらの数値に基づいて比例的な制約を使います。任意のオプションがあるので、常にtabBarの高さを削除するか、常に高さを削除しないオプションがあります。私はちょうどすべてのメインVCのビューの高さが等しいセットアップが欲しいです。すべての子孫のVCののviewDidLoad(でこれを置くメインビューの高さがviewControllersの間で変化しています。どうすればそれらを同じに保つべきですか?

は)私の問題修正されます。

let size = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarController!.tabBar.frame.height) 
view.frame = CGRect(origin: .zero, size: size) 

をが、これは私にはハック感じと切り替えるオプションや設定を好むだろう。

答えて

0

ストーリーボードまたはxibを使用している場合は、ビューの下部の制約がbottom layout guideの代わりにviewに固定されていることを確認してください。それは完全にうまくいくはずです。

enter image description here

+0

私が作成したビューは参照していませんが、各UIViewControllerのトップレベルビューです。 – Sethmr

+0

@Sethmrもしそうなら、すべてのサブビューが 'viewDidLayoutSubviews'でレイアウトを終了した後で、ビューの高さを測定して、そこにあなたの制約を更新してください。 –

+0

これは、フレーム値を印刷した場所です。私はかなりiOS賢明です....私はちょうど私が何かを欠場していた場合、これを一緒にハックしたくなかった。 – Sethmr

0

あなたのViewControllerビューのコンセントを接続し、それに応じて高さのフレームを更新します。または、サブビューを追加し、それに応じて高さを調整することができます。

+0

私はこれを行うことができますが、これを修正できるオプションはありませんか?最も一般的なレベルでは、使用されているViewController間に対称性があるはずです。 UIScreenの高さからタブバーを引いた値に基づいてビューのフレームを設定する必要がある場合、それは多かれ少なかれハックです。 – Sethmr

関連する問題