2017-03-03 2 views
1

私は、UITabBarControllerが観測しているプロパティに応じて高さを変更するUITabBarを実装しました。UITabBarはコンテンツビューと重なっています。コンテンツビューにアクセスしてフレームを更新するにはどうすればよいですか?

タブバーの高さを高くする必要がある場合は、sizeToFitを呼び出してからsetNeedsLayoutlayoutIfNeededに電話します。 willLayoutSubviewsの範囲内でコンテンツビューのフレームの高さを変更しますが、これはself.selectedViewController.viewと思われますが、変更は適用されず、ある時点で画面の高さに設定されます。最終的には、コンテンツビューはタブバーを越えて延び、タブバーはコンテンツと重なって表示されます。

ただし、タブ/ビューコントローラを切り替えると、コンテンツビューのサイズが正しく変更されます。どうすればこの問題を解決できますか?

答えて

0

たぶん、問題は、あなたがこの方法で

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
} 

ないでUIを更新するlayoutIfNeededを呼び出しているです:提案のための

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
} 
+0

おかげで、私は次の2つを混同しているかもしれないと思うが、アイデア。デリゲートメソッドで 'layoutIfNeeded'を呼び出すことはありません。他の財産の変化を見ているところで私はそれを他の場所に呼びます。 layoutIfNeededをカスタム 'viewWillLayoutSubviews'メソッドで呼び出すと、コンテンツビューのサイズが正しく変更されませんが、別のタブアイテムを選択して' tabBarController:didSelectViewController'を実行するとコンテンツビューのサイズが正しく変更されます – Steals

関連する問題