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