OGeek|极客世界-中国程序员成长平台

标题: iphone - 具有频繁更新背景的滞后 UI [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 22:39
标题: iphone - 具有频繁更新背景的滞后 UI

我的应用有一个“主” View 、一个自定义拇指杆控件和一些按钮。主视图上定义了一个额外的 CALayer,其内容会随着流图像不断更新。一些代码:

设置CADisplay链接重复调用我的draw方法:

displayLink_ = [CADisplayLink displayLinkWithTarget:self selectorselector(drawSublayers)];
[displayLink_ setFrameInterval:2];
[displayLink_ addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];

drawSublayers方法将CGImage绘制为

  CGImageRelease((__bridge CGImageRef) imageLayer_.contents);
  [imageLayer_ setContentsid)self.cameraImage_.CGImage];

问题是拇指杆和其他控件都非常滞后。这是因为背景图像的绘制占用了足够多的处理器,以至于 mainRunLoop 被拖下并且无法跟上。我读过的所有帖子都表明将任何 UI 更新移动到单独的线程都不起作用(独立测试已经证实了这一点 - 方法触发,但没有绘图发生)。

有什么想法吗?背景图像不是优先事项,即我不介意绘制它需要一些时间。我只是不希望它干扰 UI 的其余部分。



Best Answer-推荐答案


将您的绘图移出主线程。 performSelectorinBackground:

http://www.chrisumbel.com/article/asynchronous_iphone_nsthread_nstimer

关于iphone - 具有频繁更新背景的滞后 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114517/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4