iOS6和iOS7的UIScreen bounds和applicationFrame区别
Posted
技术标签:
【中文标题】iOS6和iOS7的UIScreen bounds和applicationFrame区别【英文标题】:UIScreen bounds and applicationFrame difference between iOS6 and iOS7 【发布时间】:2013-11-17 12:26:45 【问题描述】:使用iPhone4s ios7,屏幕方向为横向
-使用以下 SDK 构建应用程序
我使用 iOS6 SDK 和 iOS7 SDK 构建了应用程序,并检查了每个屏幕分辨率。结果如下:
iOS6 SDK:
[[UIScreen mainScreen] bounds] == (0, 0, 320, 480)
[[UIScreen mainScreen] applicationFrame] == (0, 0, 300, 480)
iOS7 SDK:
[[UIScreen mainScreen] bounds] == (0, 0, 300, 480)
[[UIScreen mainScreen] applicationFrame] == (0, 0, 320, 480)
为什么我们在 iOS7 中会得到反转值?
【问题讨论】:
【参考方案1】:是的。在 iOS6 及更低版本中,视图中不包含状态栏。但是在 iOS7 中状态栏是包含在主视图中的。如果你使用导航控制器,那么你可以通过设置导航栏的 Translucent 和 Opaque 属性来获得 iOS6 的行为。
[self.navigationController.navigationBar setOpaque:YES];
[self.navigationController.navigationBar setTranslucent:NO];
类似的标签栏在 iOS7 中默认也是半透明的。您可以通过设置这些属性将它们设置为不透明。
[self.tabBarController.tabBar setOpaque:YES];
[self.tabBarController.tabBar setTranslucent:NO];
【讨论】:
我同意状态栏布局可能会导致值反转。但是我无法理解 iOS7 中的边界宽度显示“300”。我认为应该是“320”,因为这两种情况都不包括状态栏高度。以上是关于iOS6和iOS7的UIScreen bounds和applicationFrame区别的主要内容,如果未能解决你的问题,请参考以下文章
[UIScreen mainScreen].bounds.size 在 iOS8 中是不是变得依赖于方向?
iOS 7 状态栏和 self.view.frame 和 self.view.bounds
为啥 [UIScreen mainScreen].bounds] 没有返回全屏尺寸?
Xcode / Swift / UIScreen.main.bounds.size.height 返回 0
([[UIScreen mainScreen] scale] == 2.0) & ([[UIScreen mainScreen] bounds].size.height == 568.0) 不
[UIScreen mainScreen].bounds 与 [UIApplcation sharedApplication].keyWindow.bounds?