0

我有一个横向运行的应用程序。我已使用下面的代码使其在 iOS 8 上运行。此代码在所有设备的模拟器上都能完美运行。但是,当我在 iPhone 5 设备上运行它时,布局是错误的。在这里和其他地方阅读了一些其他问题后,我相信在 iOS 8 上以横向模式运行时屏幕边界已被交换,但似乎并非总是如此。

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{
    ScreenHeight = screenSize.width;
    ScreenWidth = screenSize.height;
}
else
{
    ScreenHeight = screenSize.height;
    ScreenWidth = screenSize.width;
}

为什么模拟器做的事情与设备完全不同?这是否只影响 iPhone 5 或所有 iPhone/iPad?我无法访问所有运行不同 iOS 版本的设备,因此只能依靠模拟器来提供准确的结果。

有没有更可靠的方法来实现这一点?

4

2 回答 2

0

我已经设法自己解决了这个问题,如下所示。这适用于所有当前运行 iOS 8 的 iPhone/iPad 设备,其中应用程序设置为仅在横向模式下运行。不知道为什么我最初发布的代码不起作用。

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;

if (screenSize.width > screenSize.height)
{
    ScreenHeight = screenSize.width;
    ScreenWidth = screenSize.height;
}
else
{
    ScreenHeight = screenSize.height;
    ScreenWidth = screenSize.width;
}
于 2014-09-21T17:51:30.607 回答
0

这是一个增强,而不是一个缺陷。更多信息请参考以下帖子: [UIScreen mainScreen].bounds.size 在 iOS8 中是否变得与方向相关?

于 2014-10-05T09:50:37.613 回答