iPad2只提供错误的宽度和高度?

时间:2015-06-09 16:11:00

标签: ios objective-c

在任何其他设备上,我们使用此代码在横向设置所有视图,一切都很合适:

float width=[UIScreen mainScreen].bounds.size.width;
float height= [UIScreen mainScreen].bounds.size.height;

在iPad 2 only上,为了让它在横向上工作,我们必须交换width and height,否则他会对肖像进行观看,看起来很难看。

为什么只在iPad2中发生?

3 个答案:

答案 0 :(得分:3)

它没有链接到设备,而是链接到iOS。从iOS 8.0开始,边界现在取决于设备方向。我也像这样交换宽度和高度:

CGRect ScreenBounds() { CGRect bounds = [UIScreen mainScreen].bounds; CGRect tmp_bounds = bounds; if(bounds.size.width < bounds.size.height) { bounds.size.width = tmp_bounds.size.height; bounds.size.height = tmp_bounds.size.width; } return bounds; }

答案 1 :(得分:2)

不要相对于屏幕调整视图大小,而是相对于其容器视图。就这么简单。

答案 2 :(得分:1)

我有同样的问题从iOS 8开始,UIScreen面向接口,因此您可以在iOS 8上运行的设备上获得正确的结果。

为了支持iOS 7,您可以使用以下util方法:

+ (CGSize)screenSize {
CGSize screenSize = [UIScreen mainScreen].bounds.size;
if ((NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1) && UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) {
    return CGSizeMake(screenSize.height, screenSize.width);
}
return screenSize;
}