【发布时间】:2019-12-24 17:53:54
【问题描述】:
我想在应用程序退出活动时立即将 MTKView(或 GLKView/CAEAGLLayer)的内容设置为黑色。将其设置为清晰的颜色(例如黑色)并显示它的最快和最可靠的方法是什么?
【问题讨论】:
-
您可以采用与任何需要在任务切换器中隐藏敏感信息的应用相同的通用方法:监听
applicationDidEnterBackground(_:)和applicationWillEnterForeground(_:)。在从 did-enter-background 调用返回时,系统将捕获 UI 的外观,因为它是配置的。在您的情况下,您可能需要确保清除的内容由您的渲染器呈现到屏幕上,但您也可以关注this approach 以便宜地完成它。 -
哦不,我只是想拉黑MTKView,而不是按钮等其他子视图。有没有办法强制清除 MTKView?
-
MTKView上配置的透明颜色被简单地设置为它提供的渲染通道描述符的第一个颜色附件的透明颜色。所以“消隐”它只包括设置清晰的颜色(如有必要)并使用虚拟渲染命令编码器渲染到其当前的可绘制对象,然后呈现该可绘制对象,确保该呈现发生在应用程序切换器屏幕抓取的关键时刻之前发生。最后一部分可能会或可能不会很棘手,这就是我在第一条评论中对冲的原因。 -
请注意,您可能还需要提前暂停
MTKView以防止它尝试按照通常的显示链接节奏绘制,然后在您再次进入前台时取消暂停。
标签: ios opengl-es-2.0 metal metalkit mtkview