我从不依赖[[UIScreen mainScreen] applicationFrame]
,尤其是在应用程序启动期间。
在代码中创建视图时,使用超级视图来设置框架。
如果您使用带有“模拟界面元素”的 xib,它们的大小将正确,一切都会很好。
基于 UINavigationController 的应用程序
对于基于 UINavigationController 的应用程序,直接从 抓取框架self.navigationController.view
,不要尝试使用[self loadView]
and self.view.superview
。UINavigationController 使用“隐藏的”子视图来完成它的工作——所以直接的超级视图将不起作用。
UINavigationController 很特别,因为在应用程序启动期间,导航控制器会在loadView
被调用后调整视图的大小。当自动调整大小开始时,您最终会在屏幕底部有一个小边距。
为什么不 UIScreen
[[UIScreen mainScreen] applicationFrame]
不能可靠地工作(尤其是在横向启动应用程序期间)。我的经验是视图控制器的interfaceOrientation
属性与applicationFrame
方向不匹配。