2
我已經嘗試了異步加載圖像的許多方法,他們都有這個問題,這包括第三方框架。這使我相信它與我的單元格有關的行索引方法。異步圖像加載閃爍?
反正我目前加載圖像異步使用大中央調度和塊,這裏是我的代碼:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomTableCell";
static NSString *CellNib = @"CustomizedCell";
CustomizedCell *cell = (CustomizedCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellNib owner:self options:nil];
cell = (CustomizedCell *)[nib objectAtIndex:0];
}
// Configure the cell...
cell.Label.text = [self.TitleArray objectAtIndex:indexPath.row];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *String = [[self.Array objectAtIndex:indexPath.row];
NSURL *url = [NSURL URLWithString:String];
NSData *Data = [NSData dataWithContentsOfURL:url];
UIImage *Image = [UIImage imageWithData:Data];
dispatch_sync(dispatch_get_main_queue(), ^{
cell.ImageView.image = Image;
});
});
這似乎Asychrnously加載圖像,但我在使用第三方libarys所有嘗試一樣,不同的代碼等,圖像閃爍。我的意思是,當你滾動一個單元格的圖像時,看起來會閃爍,並在快速變回之前切換到另一個單元格的另一個圖像,使其看起來好像閃爍。這隻發生在你滾動的時候,通常只有前兩個和最後兩個單元格。 任何想法爲什麼? 如果有人可以幫助我解決這個問題,我會非常感激!
謝謝!
感謝您的回覆!我沒有想到這一點,但是有沒有一個原因,它只發生在前兩個和最後兩個?我嘗試使用NSOperation,並嘗試繼承uiimageview,但仍然有同樣的問題。雖然我沒有嘗試取消連接,但我一次只能在屏幕上顯示八個單元格,在這種情況下最好不要重複使用它們。再次感謝! – ApiMail
那麼,你可以試着不重複使用它們來避免這個問題(我認爲這不是一個好方法:p)。但我認爲這是你的問題^^我沒有看到任何其他原因。也許在有一些緩存後,你不會再看到問題。你應該嘗試使用更多的細胞...... ^^但是如果你再次使用NSOperation執行操作並在加載另一個圖像時取消操作,那麼你應該沒有任何問題。祝你好運。 – Vinzius