我有一个包含UICollectionView的自定义图像选择器。当选择每个单元格时,我希望我的指示器在从其资源中获取图像时显示在单元格中,并在获取图像后最后更新单元格UI。
我设法通过在后台线程中包含后台操作(获取,存储图像)同时更新主线程中的UI来完成所有工作。但是,在选择了8-12个图像后,它会停止显示指示器视图,该视图应该在第一个 DispatchQueue.main.async 调用中完成。这是我的代码:
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
...
DispatchQueue.main.async {
cell.showIndicator()
DispatchQueue.global(qos: .background).async {
let image = HelperFunctions().getAssetImage(asset: self.images[indexPath.item].asset, thumbnail: false)
selectedImage = image
self.selectedImages.append(SelectedImage(image: selectedImage!, index: indexPath.item))
self.images[indexPath.item].image = selectedImage
self.images[indexPath.item].page = self.selectedImages.count
DispatchQueue.main.async {
cell.imageView.image = selectedImage
cell.hideIndicator()
cell.setSelected(page: self.selectedImages.count)
}
}
}
}