我有两个UICollectionView
:
1 UICollectionView
- 发布
2 UICollectionView
- 类别
逻辑:
当用户点击 anycategories
时,我们发送新的 api 请求然后更新post collection view
在我的 UICollectionViewCell 中有两个条件。
1Image Item
2Video Item
在我的代码下面:
class PopularPostsCell: UICollectionViewCell {
@IBOutlet weak var myImage : UIImageView!
func setupItems(childPostsItem: ChildPostsModel, index: Int) {
if childPostsItem.media_type != "video" {
myImage.image = nil
myImage.sd_setImage(with: URL(string: childPostsItem.media), placeholderImage: UIImage(named: ""))
} else {
DispatchQueue.global(qos: .background).async {
let locImage = Helpers.videoSnapshot(filePathLocal: childPostsItem.media)
DispatchQueue.main.async {
self.myImage.image = nil
self.myImage.image = locImage
}
}
}
}
override func prepareForReuse() {
super.prepareForReuse()
myImage.image = nil
}
}
如果video
,我需要从我的代码下面的视频 URL 获取图像:
static func videoSnapshot(filePathLocal: String) -> UIImage? {
do {
let asset = AVURLAsset(url: URL(string: filePathLocal)!, options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
imgGenerator.appliesPreferredTrackTransform = true
let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime: nil)
let thumbnail = UIImage(cgImage: cgImage)
return thumbnail
} catch let error {
print("*** Error generating thumbnail: \(error.localizedDescription)")
return nil
}
}
问题:如果我快速选择类别中的多个项目,我的单元格使用随机图像。如果我慢慢选择类别,那我的手机使用图像就可以了。
我的屏幕优先:如果我快速选择类别
第二:如果我慢慢选择类别,在屏幕上一切都很好。
如果我不使用后台异步线程,一切正常,但一切都开始变慢
请,任何帮助。