gpt4 book ai didi

iOS 8 和 UIScreen 尺寸问题

转载 作者:行者123 更新时间:2023-11-29 02:09:49 25 4
gpt4 key购买 nike

我们的应用程序由 Cocos3D 和 AR 组成。自从升级到 iOS 8 以来,由于 Apple 给我们带来的变化,我们必须修复方向处理。

但是,我们仍然遇到一些问题,这些问题导致我发现一个相当有趣的现象(我在我们的应用程序和一个全新的新项目中检查过它......):

记录 [UIDevice currentDevice].orientation[UIApplication sharedApplication].statusBarOrientation[UIScreen mainScreen].bounds.size 表明当设备快速旋转时,设备方向实际上会发生变化,但界面方向有时会保持不变,这会导致屏幕边界计算错误...例如:

旋转前:

[UIDevice currentDevice].orientation = 1

[UIApplication共享应用程序].statusBarOrientation = 1

[UIScreen mainScreen].bounds.size = 414x736

第一次轮换后:

[UIDevice currentDevice].orientation = 4

[UIApplication共享应用程序].statusBarOrientation = 4

[UIScreen mainScreen].bounds.size = 736x414

第二次轮换后:

[UIDevice currentDevice].orientation = 1

[UIApplication共享应用程序].statusBarOrientation = 4

[UIScreen mainScreen].bounds.size = 736x414

现在很明显,在第二次旋转之后,设备回到了纵向模式——当然不是根据界面方向和屏幕边界...

我是不是漏掉了什么?

最佳答案

我过去遇到过这个问题,并得出结论,当您为 UIDeviceOrientationDidChangeNotification 设置观察者时,您指定的方法会在所有属性更改以反射(reflect)新方向之前调用。我处理它的方法是创建一个函数,它在延迟后运行一段代码,然后调用:

- (void)deviceOrientationDidChange:(NSNotification *)note
{
RHRunBlockAfterDelay(0.5, ^{
// Execute relevant code...
});
}

延迟函数是对在单独的 Functions.h 中定义的 [self PerformSelector:@selector(mySel) afterDelay:delay withObject:block]; 调用的包装>.

关于iOS 8 和 UIScreen 尺寸问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29407294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com