iPhone - 在 UITableView 上拖动会在后台停止渲染 OpenGL
Posted
技术标签:
【中文标题】iPhone - 在 UITableView 上拖动会在后台停止渲染 OpenGL【英文标题】:iPhone - dragging on UITableView halts rendering of OpenGL in background 【发布时间】:2010-10-25 02:24:28 【问题描述】:我有一个基于 OpenGL 的 iPad 项目。在一个视图中,我在屏幕上渲染和浮动对象。
当我在此视图之上添加一个透明 UIView 以及带有自定义单元格的透明表格视图时,我可以看到表格视图和仍在呈现的对象。
现在 - 当我在表格视图上拖动以滚动元素时,渲染会停止。一旦我从拖动中释放,渲染就会继续。在 table view 上触摸而不拖动不会导致渲染停止,只有在拖动时才会停止。
有人遇到过这种情况吗?这在模拟器和设备上都会发生。
我的想法:OpenGL 的渲染发生在由硬件决定的帧率上。在 UITableView 上拖动时,系统是否将其所有资源分配给滚动表格。
需要至少包含一些代码的答案!
非常感谢!
【问题讨论】:
【参考方案1】:拖动UIScrollView
进入一个仅处理某些运行循环模式的模态循环。使用CFRunLoopAddTimer
指定您的计时器在哪种运行循环模式下运行。
【讨论】:
这取决于您的应用程序如何安排 OpenGL 绘制调用。CFRunLoopTimer
s 是等同于 NSTimer
的 CoreFoundation,并且使用起来并不困难。
根据我的经验,OpenGL 渲染器仍在被调用,但视图没有重绘。另外,在项目模板的代码中,计时器仅用于不支持 CADisplayLink 的设备(所有 iPad 都支持,对吗?)。不过,我没有答案。 :(
如果您使用的是CADisplayLink
,则需要将适当的模式传递给addToRunLoop:forMode:
方法以上是关于iPhone - 在 UITableView 上拖动会在后台停止渲染 OpenGL的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone 中为 UITableView 设置列标题文本
将 UITableView 大小调整为 iPhone 5/5s
在 UITableView 中的 iPhone 上异步加载 JSON