小编典典

[UIScreen mainScreen].bounds.size 在 iOS8 中是否变得依赖于方向?

all

我在 iOS 7 和 iOS 8 中都运行了以下代码:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
BOOL landscape = (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight);
NSLog(@"Currently landscape: %@, width: %.2f, height: %.2f", 
      (landscape ? @"Yes" : @"No"), 
      [[UIScreen mainScreen] bounds].size.width, 
      [[UIScreen mainScreen] bounds].size.height);

以下是 iOS 8 的结果:

Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 568.00, height: 320.00

与 iOS 7 中的结果比较:

Currently landscape: No, width: 320.00, height: 568.00
Currently landscape: Yes, width: 320.00, height: 568.00

是否有任何文件说明此更改?或者它是 iOS 8 API 中的一个临时错误?


阅读 119

收藏
2022-08-01

共1个答案

小编典典

是的,它在 iOS8 中取决于方向,而不是错误。您可以查看 WWDC 2014 中的会话 214 以获取更多信息:“查看 iOS 8
中的控制器进步”

演讲中的引述:

UIScreen 现在是面向界面的:

  • [UIScreen bounds] 现在面向界面
  • [UIScreen applicationFrame] 现在面向界面
  • 状态栏框架通知是面向界面的
  • 键盘框架通知是面向界面的
2022-08-01