猿问

在iOS 8中,[UIScreen mainScreen].边界.大小是否变得与方向有关?

在iOS 8中,[UIScreen mainScreen].边界.大小是否变得与方向有关?

我在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.00Currently landscape: Yes, width: 568.00, height: 320.00

与IOS 7中的结果相比:

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

是否有指定此更改的文档?或者是iOS 8 API中的临时错误?


LEATH
浏览 1015回答 3
3回答

当年话下

是的,它依赖于iOS 8的方向,而不是bug。您可以查看WWDC 2014的会话214以获得更多信息:“查看IOS 8中控制器的进展”摘自讲稿:UIScreen现在是面向接口的:[UIScreen界]现在面向界面[UIScreen应用程序框架]现在面向接口状态栏帧通知面向接口。键盘帧通知是面向接口的。

守候你守候我

是的,在iOS 8中是定向依赖的。我为那些需要支持旧版本操作系统的应用程序编写了一个Util方法来解决这个问题。+&nbsp;(CGSize)screenSize&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;CGSize&nbsp;screenSize&nbsp;=&nbsp;[UIScreen&nbsp;mainScreen].bounds.size; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((NSFoundationVersionNumber&nbsp;<=&nbsp;NSFoundationVersionNumber_iOS_7_1)&nbsp;&&&nbsp;UIInterfaceOrientationIsLandscape &nbsp;&nbsp;&nbsp;&nbsp;([UIApplication&nbsp;sharedApplication].statusBarOrientation))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CGSizeMake(screenSize.height,&nbsp;screenSize.width); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;screenSize;}

小唯快跑啊

是的,实际上,在iOS 8中,屏幕大小取决于方向。然而,有时候,需要将大小固定在纵向方向上。我就是这样做的。+&nbsp;(CGRect)screenBoundsFixedToPortraitOrientation&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;UIScreen&nbsp;*screen&nbsp;=&nbsp;[UIScreen&nbsp;mainScreen]; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;([screen&nbsp;respondsToSelector:@selector(fixedCoordinateSpace)])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;[screen.coordinateSpace&nbsp;convertRect:screen.bounds&nbsp;toCoordinateSpace:screen.fixedCoordinateSpace]; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;screen.bounds;}
随时随地看视频慕课网APP
我要回答