我有一个横向运行的应用。我已经使用下面的代码使其在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版本的所有设备,因此依靠模拟器提供准确的结果。
有更可靠的方法来实现这个吗?
答案 0 :(得分: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;
}
答案 1 :(得分:0)
这是一种增强,而不是缺陷。 有关更多信息,请参阅以下帖子: Is [UIScreen mainScreen].bounds.size becoming orientation-dependent in iOS8?