异步将多个图像加载到单个单元格

时间:2017-07-07 03:57:55

标签: ios objective-c tableview afnetworking cell

我在向TableView的每个单元格加载5张图片时遇到问题。我使用AFNetworking进行下载,使用setImageWithUrl方法imageView

for (int i = 0; i < urls.count; i++) {
    [self.photoImageView[i] setImageWithURL:urls[i]];
}
当我滚动它时,

TableView非常刹车。但是当我在滚动时尝试加载1或2没有刹车时。 enter image description here 如何正确下载没有刹车的图像?

4 个答案:

答案 0 :(得分:2)

我认为在代码工作之下对你有帮助。

首先你使用这个库SDWebImage 然后实现下面的代码。

#import <SDWebImage/UIImageView+WebCache.h>
...
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"URL"]
             placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

答案 1 :(得分:1)

您可以使用@Ravi讨论的SDWebImage。您可以使用for循环中的上述代码异步显示所有5个图像,而不会阻塞主线程。

for (int i = 0; i < urls.count; i++) {
[self.photoImageView[i] sd_setImageWithURL:[NSURL URLWithString:urls[i]]
         placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
}

如果您不想使用任何第三方库,您也可以使用GCD。请检查此ans

希望它有所帮助。快乐编码!!

答案 2 :(得分:0)

如果您看到UIImage + AFNetworking类,它会在内部使用Async NSOperations加载图像。尝试加载具有特定尺寸的图像。它将下载该尺寸的图像。可以提高滚动性能。

NSMutableString *newURLPath = [NSMutableString stringWithString[exercise.imageURL absoluteString]];
 [newURLPath appendFormat:@"?width=200&"];
 [newURLPath appendFormat:@"height=200"];

答案 3 :(得分:0)

For downloading the Asynchronous image from url, use any of these library for improving the scroll performance

SDWebImage - 将缓存支持作为UIImageView类别的异步图像下载程序。

#import <SDWebImage/UIImageView+WebCache.h>
...
[imageView sd_setImageWithURL:URL
             placeholderImage:[UIImage imageNamed:@"placeholder.png"]
];

PINRemoteImage - 下载渐进式jpeg并获得极具吸引力的模糊更新。

对于您的情况,您可以选择SDWebImage。

For Advance Concept, you could look into this one.

AsyncDisplayKit - 为iOS应用程序平滑异步用户界面

即使是最近,Pinterest也建立在AsyncDisplayKit之上,以保持用户界面的流畅和响应。 阅读这篇文章了解更多信息:https://medium.com/@Pinterest_Engineering/re-architecting-pinterest-039-s-ios-app-e0a2d34a6ac2