У меня есть два UICollectionView
:
1 UICollectionView
- Сообщение
2 UICollectionView
- Категории
Логика:
Когда пользовательнажмите на любой categories
, который мы отправляем новый запрос API, а затем обновить post collection view
В моем UICollectionViewCell есть два условия.
1 Image Item
2 Video 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
}
}
Проблема: Если я быстро выбираю несколько элементов в категории, моя ячейка использует случайное изображение.Если я выбираю категорию медленно, то моя ячейка использует изображение в порядке.
Мой экран первый: если я выбираю категорию быстро
секунда: если я выбираю категорию медленно, на экране все хорошо.
Если я не использую фоновую асинхронную нить, все хорошо, но все начинает замедляться
Пожалуйста, помогите.