我有一个带有很多 UIButton 的 UITableView。按钮中显示的大型本地图像。我使用此代码异步加载大图像(UIButton 的类别):
- (void)asyncLoadImageAtPath:(NSString *)fullPath forState:(UIControlState)state
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage *image = [[UIImage alloc] initWithContentsOfFile:fullPath];
dispatch_async(dispatch_get_main_queue(), ^{
[self setImage:image forState:state];
});
});
}
initWithContentsOfFile: 在其他线程中运行,同时通过 setImage:forState: 在主线程中更新 UI。但是 setImage:forState: 耗时太长,导致 UITableView 滚动不流畅。
那么有什么方法可以异步更新 UIImageView 或 UIButton 的 UI 呢?
特别感谢!