解决方案说明,不是问题。

UIScrollView 注册到 CADisplayLink 时,CADisplayLink 通过防止触发 NSDefaultRunLoopMode tick 来暂停 OpenGL 渲染。

但是,如果您使用 NSRunLoopCommonModes 来解决这个问题,UIScrollView 将在突发滚动时停止滚动。一旦停止,它就不会再次滚动。 ( splinter 的)

并在其他线程/运行循环中注册 CADisplayLink(如该问题的回答中所述: CADisplayLink stops updating when UIScrollView scrolled )减少了 UIScrollView 行为破坏,但无法消除。

最佳答案

使用 UITrackingRunLoopMode 。它专为滚动内容而设计。

否则,在 -scrollViewDidScroll 也调用渲染和呈现代码,而不仅仅是在 CADisplayLink 的刻度回调中。

关于ios - UIScrollView 损坏并停止滚动 OpenGL 渲染(相关 CADisplayLink、NSRunLoop),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4135229/

10-10 20:41