2012-01-31 165 views
0

我有几个问题关于加载图像到tableviews;我正在使用ASIHTTPRequest异步加载图像到桌面

1.)我有一个tableview,我需要加载图像到它。我有大小为100KB,180KB,450KB和2MB的图像。我知道这些图像太大了,但我无法控制这个。我被迫在tableview中加载这些图像。当我这样做时,会减慢滚动速度,并减慢从视图切换到视图的速度。那我该如何预防呢?任何解决方案

2.)目前我正在使用SDWebImage,我对这个库不满意,因为它减慢了滚动等(即使我使用的图像小于110kb)我需要一个可以执行更快动作的库?

回答

1

在显示图像之前,您可能必须在后台将图像下采样到图像视图大小。它肯定会耗费你大量的CPU周期,但会加速滚动。我推荐使用ImageIO框架,因为它在非主线程中没有问题。

+0

这是最好的方法吗?你可以发布一个链接到一个使用ImageIO框架的示例项目,所以我可以更好地展现它。 – Illep 2012-01-31 18:10:45

+1

http://www.cocoabyss.com/coding-practice/uiimage-scaling-using-imageio/ – 2012-01-31 18:16:19

+1

这可能不是您的特定情况下的最佳方法,但您应该试试看它对您的工作效果如何:http://stackoverflow.com/questions/5860215/resizing-a-uiimage-without-loading-it-entirely-into-memory – Costique 2012-01-31 18:16:48

0

我不认为它是SDWebImage,正在减慢你的向下滚动。 SDWebImage在一个单独的线程中下载图像,它唯一真正在主线程上做的事情就是将图像放在UIImageView中,并且必须在主线程上完成。我在几个不同的UITableViewCell中使用SDWebImage,并且我已经能够实现平滑滚动。

2mb真的很大 - 您无法将该图像加载到UITableViewCell中而不会看到一些混乱。事实是,UIImageView需要一些时间来渲染该图像。

如果我是你,我会通过Time Profiler工具运行你的应用程序,看看你能确定哪些代码行最长时间运行在你的UITableView或你的UITableViewCells中。

+0

是的,我会尝试你的建议。你能告诉我一个允许的图片的最大尺寸(最好的选择)在tableView中显示吗? – Illep 2012-01-31 17:52:54

+0

我不能告诉你最大尺寸,你必须使用试验和错误来弄清楚。越小越好! – 2012-01-31 18:01:29