在mu UITable视图中,我正在显示来自服务器的图像。因为我正在使用延迟加载。 当行在屏幕上时,我可以加载图像。如何增加加载的图像数量。
喜欢 - 这是第一次看到3个表格单元格,并且这些单元格上的图像加载了2秒延迟。如何同时加载下3行的图像?
我正在使用以下功能加载图片
- (void)loadImagesForOnscreenRows
{
if ([imageArray count] > 0)
{
NSArray *visiblePaths = [tableView indexPathsForVisibleRows];
for (NSIndexPath *indexPath in visiblePaths)
{
AppRecord *appRecord = [dataArray objectAtIndex:indexPath.row];
if (!appRecord.appIcon) // avoiding the imagen download if already has an image
{
[self startIconDownload:appRecord forIndexPath:indexPath];
}
}
}
}
答案 0 :(得分:0)
您可以通过在背景下载图片来完成此操作,完成后,您可以将NSNotification
发布到方法以重新加载tableView
。但是在下载图像时,您必须向用户显示加载视图或其他内容,以告诉他正在下载图像。
我不建议您这样做,最好的方法是使用SDWebImage
在后台独立下载每个内容,并对tableView
做出更快的响应。在下载图像时,您会显示默认图像(占位符),在下载图像后,此功能会将其设置为需要的位置:
您只需要#import <SDWebImage/UIImageView+WebCache.h>
到项目中,并且只需使用以下代码即可在下载图像时定义占位符:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier;
CustomCell *cell = [tableview dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
MyObject *object = (MyObject *)[self.list.array objectAtIndex:indexPath.row];
//Here is where you set your image URL and it's placeholder
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
return cell;
}
它还可以缓存下载的图像并为您提供出色的性能。
答案 1 :(得分:-1)
为什么使用此代码,您只需更改键值以下即可完美地使用非限制图像。
kIDStr = @"id";
kNameStr = @"im:name";
kImageStr = @"im:image";
kArtistStr = @"im:artist";
kEntryStr = @"entry";