0

在 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];
          }
        }
      }
    }
4

2 回答 2

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;
}

它还缓存下载的图像并为您提供出色的性能。

于 2014-06-09T12:39:36.380 回答
-1

为什么要使用此代码,您只需将其更改为低于键值,它就可以完美地处理不受限制的图像。

kIDStr     = @"id";  
kNameStr   = @"im:name";  
kImageStr  = @"im:image";  
kArtistStr = @"im:artist";  
kEntryStr  = @"entry";  
于 2013-03-12T09:04:19.870 回答