【问题标题】:iOS 8 screen bounds different on device and simulator in landscape orientationiOS 8屏幕边界在横向设备和模拟器上不同
【发布时间】:2014-09-21 11:32:56
【问题描述】:

我有一个横向运行的应用程序。我已使用下面的代码使其在 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 版本的所有设备,因此只能依靠模拟器来提供准确的结果。

有没有更可靠的实现方式?

【问题讨论】:

    标签: iphone ipad ios8 bounds uiscreen


    【解决方案1】:

    我已经设法自己解决了这个问题,如下所示。这适用于所有当前运行 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;
    }
    

    【讨论】:

      【解决方案2】:

      这是一个改进,而不是一个缺陷。 有关更多信息,请参阅以下帖子: Is [UIScreen mainScreen].bounds.size becoming orientation-dependent in iOS8?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 2015-09-20
        • 2021-09-14
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多