1
私は、UITabBarControllerが観測しているプロパティに応じて高さを変更するUITabBarを実装しました。UITabBarはコンテンツビューと重なっています。コンテンツビューにアクセスしてフレームを更新するにはどうすればよいですか?
タブバーの高さを高くする必要がある場合は、sizeToFit
を呼び出してからsetNeedsLayout
とlayoutIfNeeded
に電話します。 willLayoutSubviews
の範囲内でコンテンツビューのフレームの高さを変更しますが、これはself.selectedViewController.view
と思われますが、変更は適用されず、ある時点で画面の高さに設定されます。最終的には、コンテンツビューはタブバーを越えて延び、タブバーはコンテンツと重なって表示されます。
ただし、タブ/ビューコントローラを切り替えると、コンテンツビューのサイズが正しく変更されます。どうすればこの問題を解決できますか?
おかげで、私は次の2つを混同しているかもしれないと思うが、アイデア。デリゲートメソッドで 'layoutIfNeeded'を呼び出すことはありません。他の財産の変化を見ているところで私はそれを他の場所に呼びます。 layoutIfNeededをカスタム 'viewWillLayoutSubviews'メソッドで呼び出すと、コンテンツビューのサイズが正しく変更されませんが、別のタブアイテムを選択して' tabBarController:didSelectViewController'を実行するとコンテンツビューのサイズが正しく変更されます – Steals