我有一个UIViewController派生类,它是UINavigationController视图控制器的一部分。
有视图是UIViewController的一部分,并且还可以访问navigationController属性。
那么
之间的区别是什么self.navigationController.view.frame
vs
self.view.frame
就UIViewController类而言?
答案 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的坐标,无论可能是什么。