在Objective-C中延迟加载AQGridView中的图像

时间:2012-02-21 15:57:10

标签: objective-c xcode uiimageview uiimage aqgridview

在我的应用中,我有一个根视图,它是一个gridview。我在gridview单元格中加载图像。我在加载图像时遇到问题。一旦我启动应用程序,一秒钟后会有图像加载到单元格中的空白单元格中没有图像。有没有办法解决这个问题。以下是我的代码。

UIImage *defaultImage = [UIImage imageNamed:@"addEmployee.png"];
if (!employee.imageName) {
    return defaultImage;
}

  if ([_imageCache objectForKey:employee.imageName]) {
      return [_imageCache objectForKey:employee.imageName];
  }

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {
    UIImage *image = [UIImage imageWithContentsOfFile:[self  imagePath:employee.imageName]];
    dispatch_async(dispatch_get_main_queue(), ^ {
        if (image) {
            [_imageCache setObject:image forKey:employee.imageName];
            cell.imageView.image = image;
        } else {
            [_imageCache setObject:defaultImage forKey:employee.imageName];
            cell.imageView.image = defaultImage;
            return;
        }
    });
});

 return cell.imageView.image;

}

1 个答案:

答案 0 :(得分:0)

加载图片需要时间,没有办法让它瞬间完成。你的代码看似合理,你正在从主线程加载图像,所以它不会阻止UI,并在加载后缓存它们。使速度更快的唯一方法是加载较少的图像或使图像变小。