当用户执行五指捏关闭手势时,我的应用程序应该做什么(或者当前可能做错了)以支持正确的视觉效果?
当我的iPad应用程序上执行五指捏关闭应用程序手势时,用于收缩过渡的应用程序UI图像为黑屏。有一个例外;当我的应用程序首次启动时,只要我没有离开初始屏幕,手势就会使用我的应用UI的正确快照。
作为测试,我添加了下面的代码,看看我是否能在所有情况下都获得红屏。结果是用于显示我的应用UI的情况下的红色屏幕,并且在失败的情况下仍然会出现黑屏。
- (void)applicationWillResignActive:(UIApplication *)application { UIView *aView = UIApplication.sharedApplication.keyWindow.subviews.lastObject; UIImageView *imageView = [[UIImageView alloc] initWithFrame:aView.bounds]; imageView.backgroundColor = [UIColor redColor]; [aView addSubview:imageView]; }
我意识到这个问题很模糊,但我希望能够深入了解iOS在关闭手势时使用的屏幕。基于上面的代码,它比applicationWillResignActive更多。
我正在使用Xcode 5.1.1,iOS 7.0部署目标构建,在iOS7和iOS8上运行时出现问题(所有版本都包括8.1版的公开发布版)。
修改
如果我通过进一步捏合来继续收缩手势,当我的应用程序的缩略图图像达到屏幕大小的约25%时,空黑图像会捕捉到我的应用程序UI的正确图像。此时我可以反转手势(将手指分开)并且正确的图像一直增长到全屏。在此过程中,图像清晰而不缩放。
如果我在一个文本区域中有焦点并用一根手指点按并抬起放大镜放大镜,然后放下我的其他四个手指并开始缩小,黑色屏幕将我的UI显示在放大镜所在的圆圈中(休息是黑色的。)
正如我在下面的评论中所提到的,双击主页按钮总会产生正确的快照,以便快速切换应用。
我的应用没有运行任何后台线程,也没有请求在后台运行长时间运行任务的特定权限。
答案 0 :(得分:0)
您的应用使用的任何更改-drawViewHierarchyInRect:afterScreenUpdates:YES在任何地方?我在使用该API时遇到了同样的问题。似乎有很多GPU错误与将AfterScreenUpdates设置为YES相关。
更改我的应用程序以使用renderInContext(cpu而不是gpu)修复了问题,但这样做会引入其他问题,所以这是一个折腾。