UITabBarController内で利用可能な境界をどのように取得しますか

StackOverflow https://stackoverflow.com/questions/600561

  •  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]

ただし、ドキュメントでは、オブジェクトに直接アクセスしないことをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top