我有一个典型的“向下钻取”风格应用,其DetailViewController
包括UIImageView
,UIWebView
和一些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
来电中。
如何让应用等待图片下载?
答案 0 :(得分:8)
问题在于您正在为dataWithContentsOfURL
提供远程网址。下载它需要时间,而且可能永远不会到达。那是冒险的。而是显示占位符并使用NSURLConnection
在后台下载真实图像;它将在获得图像时调用代理,现在您可以立即显示它。
答案 1 :(得分:1)
我建议
SDWebImage所以你不需要自己实现它。