由于某些原因,当我使用 GCD 下载图像时,图像会随机开始闪烁。
我将重置模拟器中的内容设置,它会工作一次,然后它会再次开始闪烁。
这是我正在使用的代码。我在那里重新加载,因为如果我不重新加载它,图像不会显示,直到我点击单元格。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) {
NSURL *url = [NSURL URLWithString:self.entries.arrayimage];
NSData *imgData = [NSData dataWithContentsOfURL:url];
dispatch_sync(dispatch_get_main_queue(), ^(void) {
cell.imageView.image = nil;
UIImage *img = [UIImage imageWithData:imgData];
cell.imageView.image = img;
[self.tableView reloadData];
});
});
return cell;
[self.tableView reloadData];
最佳答案
那是因为您正在使用 dispatch_async(dispatch_get_global_queue
从文件异步加载 imageData。在 cellForRow
中使用此样式加载图像将使单元格图像应该首先是前一个图像。然后完成异步加载后,会调用dispatch_sync(dispatch_get_main_queue(),
加载你想要的图像。因此,无论何时你reloadData或任何其他方法调用cellForRow
,单元格图像会闪烁。
我知道您想在不阻塞主线程的情况下加载图像,但这不是一个好方法。
关于ios - UITableView UIImageView 图像闪烁 - iOS/Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164728/