UIViewController的视图框架和navigationController.view.frame之间的区别?

时间:2011-02-09 22:20:44

标签: iphone

我有一个UIViewController派生类,它是UINavigationController视图控制器的一部分。

有视图是UIViewController的一部分,并且还可以访问navigationController属性。

那么

之间的区别是什么
self.navigationController.view.frame 

vs

self.view.frame

就UIViewController类而言?

2 个答案:

答案 0 :(得分:7)

navigationController只是UIViewController上的一个方便属性,可让您访问包含导航控制器的视图控制器,如果有的话。自UINavigationController扩展UIViewController以来,它也具有view属性。请参阅UIViewController的类引用中Getting Other Related View Controllers的文档,以获取其他视图控制器引用UIViewController可能具有的列表。

  • self.navigationController.view.frame为您提供导航控制器视图的框架
  • self.view.frame为您提供了视图控制器视图的框架

导航控制器的视图框架比任何容器视图控制器的视图框架都要大,因为它包含导航栏和状态栏。

希望这有助于澄清一些事情!

答案 1 :(得分:0)

我不确定我是否了解视图控制器的关系,但总的来说view.frame会返回一个相对于视图superview的坐标(origin(x,y)和size(width,hieght))的CGRect 。因此,如果您的navigationController是派生的UIViewController的父视图,那么在该控制器中调用'self.view.frame'将返回相对于navigationController的坐标。调用self.navigationController.view.frame将返回其相对于其superview的坐标,无论可能是什么。