ios表格视图单元格按行索引顺序加载图像
Posted
技术标签:
【中文标题】ios表格视图单元格按行索引顺序加载图像【英文标题】:ios table view cell load images in the order of row index 【发布时间】:2015-01-19 09:21:03 【问题描述】:在表格视图中配置单元格,我使用
-(void)setImageWithURLRequest:(NSURLRequest *)urlRequest placeholderImage:(UIImage *)
AFNetworking 中的方法从 web 加载单元图像(放入 cellForRowAtIndexPath 中)
用户在加载时不会卡住滚动。
----------
问题是每张图片都以随机顺序显示
因为这个方法发送异步请求,
但我希望它们一个接一个地显示,
例如第 1 行单元格中的图像必须在第 0 行单元格中的图像显示后显示, 等等
好像加载可以是异步的(而且必须是)...
但显示应该是同步的(按顺序!)
有没有简单的方法可以做到这一点?
提前致谢
【问题讨论】:
为什么?图像大小不同,因此将以不同的速度下载。有些可能会失败。为什么会因为这些问题而阻止用户看到某些内容? 试图让它看起来平滑,当然不同的显示没有错……但是,有没有办法? 【参考方案1】:将图像的名称存储在一个数组中,并在 UITableView 的 cellForItemAtIndexPath() 方法中访问它。通过这种方式,您将获得图像的正确顺序。您不应该因为图像的大小不同而一个接一个地显示图像(例如 - 如果图像大小以兆字节为单位,加载将花费大量时间,该时间可用于加载另一个图像)
NSURL *photoURL = [NSURL URLWithString:[[array objectAtIndex:indexPath.row] valueForKey:@"Image"]];
[cell.imgMyPhoto setImageWithURL:photoURL placeholderImage:nil usingActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
【讨论】:
【参考方案2】:如果您想一个接一个地显示它们,您可以使用此代码将执行顺序设置为 FIFO,这将为您提供所需的输出。
[[[SDWebImageManager sharedManager] imageDownloader] setExecutionOrder:SDWebImageDownloaderFIFOExecutionOrder];
你可以使用 Utsav Parikh 上面提到的这个方法
NSURL *photoURL = [NSURL URLWithString:[[array objectAtIndex:indexPath.row] valueForKey:@"Image"]];
[cell.imgLogo setImageWithURL :photoURL placeholderImage : kPhotoPlaceholder usingActivityIndicatorStyle : UIActivityIndicatorViewStyleGray];
但不要忘记导入头文件
#import "UIImageView+UIActivityIndicatorForSDWebImage.h"
【讨论】:
以上是关于ios表格视图单元格按行索引顺序加载图像的主要内容,如果未能解决你的问题,请参考以下文章