2009-11-03 148 views
0

背景: 我有一个UITableView显示每个单元格中的图像。这些图像都是大pdf文件的一部分。所以我所做的实际上是在这些UITableViewCells中渲染小的pdf部分,每个单元格只显示一个部分。因此,我将UIView添加到单元格的内容视图并按需呈现视图。 渲染这些PDF部分是昂贵的,每个需要大约0.2秒(仅绘制Pdf部分),这会降低表格的滚动速度。如何在UITableView中实现类似UIImageView的延迟加载

想法: 现在,我知道可能有解决方案,当我看UIImage如何呈现基于URL的图像。如果您基于url创建UIImage,则会以某种方式延迟这些图像。例如看看iTunes应用程序。 平滑滚动是可能的,每个图像都显示为未渲染,并在渲染完成后顺利出现。

问题:如何在上面描述的UITableViewCell中渲染昂贵的渲染,以某种方式显示单元延迟?有没有人有个想法,Apple如何在UIImageView中解决它?

在此先感谢

丹尼尔

回答

0

这是(大部分)复制的Lazy load images in UITableViewCell。检查那里的链接和例子。

总之,你需要的是产生一个单独的线程用于加载PDF缩略图,然后该线程通过生成的图像发送回主线程。这很容易通过使用performSelectorInBackground:withObject:performSelectorOnMainThread:withObject:waitUntilDone:方法完成。

+0

嗨 感谢提示重复消息。我没有看到它。 解决方案虽然不满足我。如果你认为内存消耗大,我必须在_advance_中建立多少缓存。我的图像和整个屏幕一样大。 我刚刚找到了一个解决方案,看起来非常有前途:我使用CATiledLayer!如果您在图层中委托绘图,则所有后台线程均由系统完成。您只需将图形从视图移至图层即可。 – user201631 2009-11-03 19:38:30

+0

你能提供一个这样的例子吗? – Jordan 2009-11-03 23:13:51