我正在 Xcode 6 中构建一个横向应用程序。当我在 iOS 8.3 模拟器上运行它时,[UIScreen mainScreen].bounds
是667x375
,但是当我在 iPhone 6 iOS 8 上运行它时,[UIScreen mainScreen].bounds
是375x667
。这给我的应用程序带来了问题,因为许多元素的大小都与屏幕边界一致。我知道[UIScreen mainScreen].bounds
在 iOS 8 中发生了变化,但这不是问题。它应该667x375
在设备和模拟器上。我会提供代码,但我不知道问题出在哪里。
问问题
1480 次
3 回答
1
iOS 8.3 iPhone6 Simulator
Portlait
bounds:{{0, 0}, {375, 667}}
applicationFrame:{{0, 20}, {375, 647}}
nativeBounds:{{0, 0}, {750, 1334}}
Landscape
bounds:{{0, 0}, {667, 375}}
applicationFrame:{{0, 0}, {667, 375}}
nativeBounds:{{0, 0}, {750, 1334}}
iOS 8.3 iPhone6 Device
Portlait
bounds:{{0, 0}, {375, 667}}
applicationFrame:{{0, 20}, {375, 647}}
nativeBounds:{{0, 0}, {750, 1334}}
Landscape
bounds:{{0, 0}, {667, 375}}
applicationFrame:{{0, 0}, {667, 375}}
nativeBounds:{{0, 0}, {750, 1334}}
在 iOS 8.3 上,模拟器和设备的结果完全相同。如果报告的情况仅发生在 iOS 8 设备上,那么将您的应用程序定位到 iOS 8.3 怎么样?
于 2015-04-22T02:47:49.830 回答
0
在 iOS8 上,窗口的框架会随着设备的方向而改变。我认为 667x375 是您的设备横向时的尺寸。
于 2015-04-22T02:32:09.883 回答
0
这是我用来将屏幕大小更改回 iOS 8 之前的快速类方法(切换高度和宽度)
+ (CGSize)getScreenSize {
CGSize screenSizeRef = [[UIScreen mainScreen] bounds].size;
if (screenSizeRef.width > 450 && UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
// iPhone 6+ width on portrait is 414
return CGSizeMake(screenSizeRef.height, screenSizeRef.width);
}
if (screenSizeRef.width > 900 && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return CGSizeMake(screenSizeRef.height, screenSizeRef.width);
}
return screenSizeRef;
}
因此,不要调用[[UIScreen mainScreen] bounds]
,而是将此方法放在一个新类中(这样您就可以从程序中的任何位置访问它)并将您的屏幕尺寸参考设置为getScreenSize
于 2015-04-22T03:26:37.827 回答