UITabBarController内で利用可能な境界をどのように取得しますか
-
03-07-2019 - |
質問
UITabBarControllerを使用している場合、下部のタブバーのサイズを取得するにはどうすればいいですか?タブの子ビューのサイズを[[UIScreen mainScreen] applicationFrame]に変更している多くの例がありますが、タブバーは画面下部のスペースを占有するため、正しくありません。
また、タブバーのサイズを変更することは可能ですか?
ありがとう ライアン
解決
applicationFrameを使用できる理由は、UITabBarControllerがサブコントローラーのビューのサイズを変更するためです。ビューが正しくサイズ変更をサポートしている限り、すべて機能します。
Tab Bar ControllerのtabBarプロパティにアクセスしてそのフレームを見ると、Tab Barのサイズを取得できます。 Tab Barの合計サイズとビューの領域は、Tab Bar ControllerのViewプロパティのフレームを見ると確認できるため、少し差し引くと、探している数字が得られます。
CGFloat myViewHeight = tabBarController.view .size.height
- tabBarController.tabBar.size.height;
他のヒント
古い質問ですが、とにかく:
NIBからビューをロードしない場合、loadView funcで自動サイズ変更フラグを設定します。このようなもの:
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleWidth;
その場合、[[UIScreen mainScreen] applicationFrame]を使用してビューのフレームを指定できます。タブバーが存在する場合、自動的にサイズ変更されます。
ビューにNIBがある場合、autoresizingMaskはInterface Builderによって自動的に設定されます。
Markus
UITabBarのサイズを変更する方法がわかる場合、UITabBarControllerのUITabBarのサイズを変更できます。取得することでオブジェクトにアクセスできます
[[UITabBarController subviews] objectAtIndex:0]
ただし、ドキュメントでは、オブジェクトに直接アクセスしないことをお勧めします。