当用户执行五指捏合手势时,我的应用程序应该做什么(或者它可能正在做错误的操作)来支持正确的视觉效果?
当在我的iPad应用程序上执行关闭应用程序手势的五个手指按压时,用于缩小过渡的应用UI的图像是一个黑色屏幕。有一个例外:当我的应用程序第一次启动时,手势使用我的应用程序UI的正确快照,只要我不从初始屏幕导航。
作为一种测试,我添加了下面的代码,看看在所有情况下我是否能够获得一个红色屏幕。结果是一个红色屏幕的情况下,过去显示我的应用程序UI,仍然得到一个黑色的屏幕在失败的情况下。
我意识到这个问题是模糊的,但我希望的是洞察iOS是从哪里得到它在紧握时使用的屏幕来关闭手势。基于上面的代码,它比applicationWillResignActive更重要。
我正在使用Xcode 5.1.1、iOS 7.0部署目标进行构建,问题出现在iOS7和iOS8上(所有版本到包括8.1的公共发行版)。
编辑
如果我继续收缩动作,进一步捏捏,当我的应用程序的缩略图达到屏幕大小的25%时,空的黑色图像就会截取到我的应用程序UI的正确图像。在这一点上,我可以扭转手势(把手指分开),正确的图像会一直长到全屏。在这个过程中,图像是清晰的,不缩放。
如果我在文本字段中有焦点,用一个手指点击并按住以打开放大镜,然后放下我的其他四个手指并开始收缩,黑色屏幕显示我的UI在一个圆圈中(休息是黑色的)。
正如我在下面的评论中提到的那样,双击home按钮总是能为快速的应用程序切换提供一个正确的快照。
我的应用程序没有运行任何后台线程,也没有请求在后台运行长时间运行任务的特定权限。
发布于 2014-11-15 20:11:16
你的应用程序在任何地方使用-drawViewHierarchyInRect:afterScreenUpdates:YES有什么变化吗?在使用那个API时,我也看到了同样的问题。似乎有很多GPU错误与将afterScreenUpdates设置为YES有关。
改变我的应用程序使用renderInContext (而不是gpu)解决了问题,但这样做会带来其他问题,所以这是一个折腾。
https://stackoverflow.com/questions/25937332
复制相似问题