UIView需要很长时间才能更新

时间:2011-03-04 15:45:25

标签: iphone ios4 iphone-sdk-3.0 uikit ios-simulator

在iPad应用程序中,我在一个更大的UIView中有一堆UIImageViews。每个UIImageView都包含一个在单独的线程中生成的缩略图(以便不冻结应用程序)。成功生成缩略图后,我在主线程上调用setNeedsDisplay,然而,当拇指变得可用时,它不会更新UIImageViews(我可以在日志中看到它们),而是需要大约5秒然后显示所有这些都是一次性的。

这是我在单独的线程中创建缩略图时所做的事情:

[self performSelectorOnMainThread:@selector(setNeedsDisplay) 
                       withObject:nil 
                    waitUntilDone:NO];

任何想法?

3 个答案:

答案 0 :(得分:0)

问题在于你无法告诉cocoa它必须“现在”重绘。 使用setNeedsDisplay,您可以单独订购重绘,因为绘图是相当昂贵的过程。

  

<强> setNeedsDisplay

     

您可以使用此方法或   setNeedsDisplayInRect:通知   您的视图内容需要的系统   要重新绘制。这种方法制作了一个   请注意并返回   立即。视图实际上并非如此   重绘直到下一个绘图周期,   所有无效的视图   已更新。

Mybe是一个更好,更高效的解决方案,等待所有生成的缩略图?!

答案 1 :(得分:0)

你的主要内容是什么?如果您的应用程序在重绘之前等待所有缩略图都可用,那么听起来好像您可能无意中阻塞了主线程,直到您的缩略图队列清空为止。你是如何设置线程的?

答案 2 :(得分:0)

我会使用NSNotification。在图像准备好时,从线程发送加载图像的通知。您的视图控制器可以观察这些通知并在视图到达时更新视图。