在iOS 8中,[UIScreen bounds] 、[UIScreen applicationFrame] 、Status bar、Keyboard这些frame都是根据设备真实方向来返回frame的,而在iOS 7中,不过是横屏还是竖屏,iOS总是返回竖屏的frame,如以下输出:
iOS 7:
-
竖屏:
-
UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)
-
横屏:
-
UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)
iOS 8:
-
竖屏:
-
UIScreen.mainScreen().bounds: (0.0,0.0,320.0,568.0)
-
横屏:
-
UIScreen.mainScreen().bounds: (0.0,0.0,568.0,320.0)
这就对某些支持横屏的App造成了困扰,其实也只需要加两个宏或者改造一下就行了:
-
#define SCREEN_WIDTH (getScreenSize().width)
-
#define SCREEN_HEIGHT (getScreenSize().height)
-
CGSize getScreenSize() {
-
CGSize screenSize = [UIScreen mainScreen].bounds.size;
-
if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) &&
-
UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
-
return CGSizeMake(screenSize.height, screenSize.width);
-
}
-
return screenSize;
-
}