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 绘制调用。 CFRunLoopTimers 是等同于 NSTimer 的 CoreFoundation,并且使用起来并不困难。 根据我的经验,OpenGL 渲染器仍在被调用,但视图没有重绘。另外,在项目模板的代码中,计时器仅用于不支持 CADisplayLink 的设备(所有 iPad 都支持,对吗?)。不过,我没有答案。 :( 如果您使用的是CADisplayLink,则需要将适当的模式传递给addToRunLoop:forMode: 方法

以上是关于iPhone - 在 UITableView 上拖动会在后台停止渲染 OpenGL的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 中为 UITableView 设置列标题文本

将 UITableView 大小调整为 iPhone 5/5s

自定义 UITableView - iphone

在 UITableView 中的 iPhone 上异步加载 JSON

UITableView 高度不适合不同 iPhone 设备的容器垂直(底部)

iPhone + UITableView