【问题标题】:iPhone - dragging on UITableView halts rendering of OpenGL in backgroundiPhone - 在 UITableView 上拖动会在后台停止渲染 OpenGL
【发布时间】:2010-10-25 02:24:28
【问题描述】:

我有一个基于 OpenGL 的 iPad 项目。在一个视图中,我在屏幕上渲染和浮动对象。

当我在此视图之上添加一个透明 UIView 以及带有自定义单元格的透明表格视图时,我可以看到表格视图和仍在呈现的对象。

现在 - 当我在表格视图上拖动以滚动元素时,渲染会停止。一旦我从拖动中释放,渲染就会继续。在 table view 上触摸而不拖动不会导致渲染停止,只有在拖动时才会停止。

有人遇到过这种情况吗?这在模拟器和设备上都会发生。

我的想法:OpenGL 的渲染发生在由硬件决定的帧率上。在 UITableView 上拖动时,系统是否将其所有资源分配给滚动表格。

需要至少包含一些代码的答案!

非常感谢!

【问题讨论】:

    标签: iphone ipad uitableview opengl-es ios


    【解决方案1】:

    拖动UIScrollView 进入一个仅处理某些运行循环模式的模态循环。使用CFRunLoopAddTimer 指定您的计时器在哪种运行循环模式下运行。

    【讨论】:

    • 这取决于您的应用程序如何安排 OpenGL 绘制调用。 CFRunLoopTimers 是等同于 NSTimer 的 CoreFoundation,并且使用起来并不困难。
    • 根据我的经验,OpenGL 渲染器仍在被调用,但视图没有重绘。另外,在项目模板的代码中,计时器仅用于不支持 CADisplayLink 的设备(所有 iPad 都支持,对吗?)。不过,我没有答案。 :(
    • 如果您使用的是CADisplayLink,则需要将适当的模式传递给addToRunLoop:forMode: 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多