iOS6和iOS7中UIScreen bounds和applicationFrame的区别

3

使用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个回答

2

是的。在iOS6及以下版本中,状态栏不包含在视图中。但是在iOS7中,状态栏包含在主视图中。如果您正在使用导航控制器,则可以通过设置导航栏的半透明和不透明属性来获得iOS6的行为。

[self.navigationController.navigationBar setOpaque:YES];
[self.navigationController.navigationBar setTranslucent:NO];

同样,在iOS7中,标签栏默认也是半透明的。您可以通过设置这些属性来使它们不透明。

[self.tabBarController.tabBar setOpaque:YES];
[self.tabBarController.tabBar setTranslucent:NO];

1
我同意状态栏布局可能会导致值倒置的问题。然而,我不明白为什么在iOS7中边界宽度显示为“300”。我认为应该是“320”,因为在两种情况下都没有包括状态栏高度。 - TGT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接