我有一個應用程序,我加載了很多大型圖像。當我懶加載它們,甚至在圖像加載後,單元格不會加載它們,直到我將手指從屏幕上移開。我打電話給我的downloadImageForVisiblePaths
功能在UIScrollViewDelegate
方法scrollViewDidEndDragging
並從該scrollViewDidEndDecelerating
之餘,我也設置在圖像中UITableView
的cellForRowAtIndexPath
方法,像這樣:UITableView懶惰加載的圖像不加載,直到手指關閉
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// Code to load reusable custom cell
CustomObject *object = (CustomObject*) [self.tableArray objectAtIndex: indexPath];
if(!object.mainImage){
[self downloadImageForIndexPath:indexPath];
cell.mainImageView.image = [UIImage imageNamed:@"placeholder"];
}else{
cell.mainImageView.image = object.mainImage;
}
return cell;
}
凡downloadImageForIndexPath
看起來是這樣的:
-(void) downloadImageForIndexPath:(NSIndexPath*) indexPath{
UIImage *loadedImage = [[UIImage alloc] init];
// take url and download image with dispatch_async
// Once the load is done, the following is done
CustomCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
cell.mainImageView.image = loadedImage;
CustomObject *object = (CustomObject*) [self.tableArray objectAtIndex: indexPath];
object.mainImage = loadedImage;
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableVIew reloadData];
});
}
我看不到我要去哪裏錯了。即使手指在屏幕上,我也需要加載圖像。這種行爲類似於圖片在Google+,Instagram或Facebook等應用上的加載方式。
任何指針將不勝感激。
嗯,我實際上是在主線程上設置圖像,只在後臺線程中獲取圖像。我正在嘗試SDWebImage。會告訴你這件事的進展的。 –
SDWebImage完美地工作。一個問題,但。當我嘗試發佈應用程序時,蘋果不會給我關於使用非公共選擇器的警告嗎? –
SDWebImage中的所有內容都是公開的,應用商店中有很多應用程序正在使用它。 – iRaivis