我有一个表视图,它运行一些代码,用于在后台线程中从 NSData 获取 UIImage,然后在前台调用[button setImage:image forState:UIControlStateNormal];
.
问题是它会在该行上冻结 UI 片刻,直到它完成。这意味着 UI 在将其设置为图像时会冻结。因为用户正在滚动,所以这是非常明显和紧张的。有什么办法可以避免我的 UI 像这样冻结?
dispatch_queue_t cellSetupQueue = dispatch_queue_create("Setup", NULL);
dispatch_async(cellSetupQueue, ^{
UIImage *image = [self.mediaDelegate largeThumbnailForMediaAtIndex:indexPath.row];
dispatch_async(dispatch_get_main_queue(), ^{
[self.thumbnailButton setImage:image forState:UIControlStateNormal];
});
});
dispatch_release(cellSetupQueue);