高CPU负载延迟UIView重绘(iOS)

时间:2011-01-22 14:29:07

标签: ios uiview opengl-es

我正在制作一个带有OpenGL ES视图的iOS应用程序。在3D视图的顶部,我使用Cocoa Touch绘制了各种GUI位。

只要帧率良好,这样就可以正常工作。但是,当CPU负载变高(GLES视图降至20-f)时,似乎下一个UIKit显示周期正在向前推进。

具体来说,我正在尝试显示基于各种UIView子类的工具提示视图。当它显示它时,我更新工具提示标签文本并调整其背景大小,然后为主UIView设置hidden为NO并调用setNeedsDisplay和setNeedsLayout。

当帧速率较低(即CPU负载较高)时,下一个显示周期似乎无限期地向前推进。但是当CPU负载下降时,视图会按预期显示。

有什么方法可以在我的3D引擎重绘之间在UIKit中激发绘制周期?还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

在iPhone上,除非另有说明,否则所有应用程序都在一个线程上执行UI绘图和逻辑。

您可以将3D绘图代码移动到另一个帖子中:

[NSThread detachNewThreadSelector:@selector(3DRenderingMethod) toTarget:self withObject:nil]

以下是相关文档:http://developer.apple.com/library/iOS/#documentation/Cocoa/Reference/Foundation/Classes/NSThread_Class/Reference/Reference.html