我有一个UITableView
,其中有很多UITableViewCell
,我使用此代码将内容和图片加载到UITableCell
,但每张图片显示的图片需要很长时间{1}}。
UITableViewCell
将代码置于dispatch_async中会使滚动变得更加滑动,但仍然需要时间来加载图像。
如果我有许多像Facebook或Instagram这样的图像,如何让它更快地加载图像。
感谢。
答案 0 :(得分:2)
使用以下库之一将图像异步加载到您查看:
1)Asyncimageview https://github.com/nicklockwood/AsyncImageView
2)SDWebImage https://github.com/rs/SDWebImage
答案 1 :(得分:2)
由于Async调用和ReUsability会出现问题。让我们说你在IndexPath 1的图像正在加载图像,但它仍然需要时间下载,同时用户向下滚动另一个索引,即15和内部索引1的同一单元格分配给索引15,单元格1的图像将显示在单元格15中,如果您还没有设法处理同一个单元格实例的先前调用。这就是为什么它更好地使用一些缓存库,如SDWebImage(如@ SeanLintern88所说)或AFNetworking's UIImageView Category
AlomaFire's UIImageView (For Swift)
如果您想要执行此操作,那么最好使用子类化,它将帮助您管理呼叫及其终止。
在您的情况下,加载图像可能是因为您从服务器加载的实际图像的大小。 CDN类型的服务提供了一些易于实现的技术,以根据请求提供不同大小的图像。因此,即使用户已经上传了1200x1200大小的图像,但在列表屏幕上,您可以获取其120x120大小的图像,这有助于加快加载速度,同时还可以节省物理内存。
答案 2 :(得分:1)
听起来你的图像尺寸可能很大,因为代码看起来很好,通常像FB / Insta这样的应用程序会使用低分辨率再现,然后在需要之后加载更高分辨率。
大多数人使用图像获取库,例如SDWebImage
,因为这会异步获取图像并对其进行缓存,因此您不必将它们保存在模型上并占用内存。
答案 3 :(得分:0)
“使用以下某个库来异步加载图像到您查看:
1)Asyncimageview https://github.com/nicklockwood/AsyncImageView
2)SDWebImage https://github.com/rs/SDWebImage“
很好。