UIImage imageWithData需要一些时间才能出现

时间:2012-01-08 02:02:49

标签: iphone objective-c ios uiimageview grand-central-dispatch

我有一个典型的“向下钻取”风格应用,其DetailViewController包括UIImageViewUIWebView和一些UILabel。问题是imageView加载需要一段时间!它是白色(背景颜色)片刻,然后最终在3-5秒后加载(可能是下载所需的时间)。

代码是:

- (void)loadSummary {
    self.dogFood = [[IKFetcher sharedFetcher] fetchDogFoodInfoForId:self.dogFoodId];
    self.dogFoodAnalysisArray = [[IKFetcher sharedFetcher] fetchDogFoodAnalysisArrayForId:self.dogFoodId];
    self.dogFoodRating = [[IKFetcher sharedFetcher] getAvgDogFoodRatingForId:self.dogFoodId];
    if ([self.dogFood.dfImageUrl length] != 0) {
        self.dogFoodImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.dogFood.dfImageUrl]]];
    }
}

loadSummary的来电被包含在dispatch_async来电中。

如何让应用等待图片下载?

2 个答案:

答案 0 :(得分:8)

问题在于您正在为dataWithContentsOfURL提供远程网址。下载它需要时间,而且可能永远不会到达。那是冒险的。而是显示占位符并使用NSURLConnection在后​​台下载真实图像;它将在获得图像时调用代理,现在您可以立即显示它。

答案 1 :(得分:1)

我建议

SDWebImage所以你不需要自己实现它。