我在向TableView
的每个单元格加载5张图片时遇到问题。我使用AFNetworking
进行下载,使用setImageWithUrl
方法imageView
:
for (int i = 0; i < urls.count; i++) {
[self.photoImageView[i] setImageWithURL:urls[i]];
}
当我滚动它时, TableView
非常刹车。但是当我在滚动时尝试加载1或2没有刹车时。
如何正确下载没有刹车的图像?
答案 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