2011-02-09 5 views
2

私はUINavigationControllerのビューコントローラの一部であるUIViewController派生クラスを持っています。UIViewControllerのビューフレームとnavigationController.view.frameの違いは?

UIViewControllerにはビューがあり、navigationControllerプロパティにもアクセスできます。

だから、のUIViewControllerクラスの面で

self.view.frame 

self.navigationController.view.frame 

の違いは何ですか?

答えて

7

navigationControllerは、UIViewControllerの便利なプロパティで、ビューコントローラに含まれているナビゲーションコントローラにアクセスできるようにします。 UINavigationControllerUIViewControllerまで拡張されているため、viewプロパティもあります。 UIViewControllerが潜在的に持つ可能性のある他のView Controllerリファレンスのリストについては、Getting Other Related View ControllersのドキュメントをUIViewControllerのクラスリファレンスで参照してください。

  • self.navigationController.view.frame

  • self.view.frame

ナビゲーションコントローラのビューフレームはそのコンテナビューコントローラのいずれかよりも大きくなっているあなたにView Controllerのビューの枠を与えるあなたのナビゲーションコントローラのビューの枠を与えますナビゲーションバーとステータスバーが含まれているため、フレームを表示できません。

これは、少し上のものをクリアするのに役立ちます。

+0

+1ルーカス........ – Sabby

+0

ナビゲーションコントローラがTabBarの一部であるタブバーの高さを含むことはありますか? –

+0

いいえ。ナビゲーションコントローラにはタブバーの認識がありません。 – LucasTizma

0

私はあなたのビューコントローラの関係を理解し​​ていませんが、一般的には、view.frameは、ビューsuperviewを基準にした座標(origin(x、y)およびサイズ(幅、高さ))を持つCGRectを返します。したがって、あなたのnavigationControllerが派生したUIViewControllerの親ビューである場合、そのコントローラーで 'self.view.frame'を呼び出すと、navigationControllerを基準にした座標が返されます。 self.navigationController.view.frameを呼び出すと、スーパービューに対する相対座標が返されます。

関連する問題