내 UICollectionView가 cellForItemAt
에있는 이미지를 가져 오는 중입니다. 스위프트 3으로 업그레이드 한 후에는 매우 빠르게 스크롤 할 때 일부 이미지가 표시되지 않습니다. 여기 cellForItemAt
내 코드입니다 : 심지어 화면에 전무로UICollectionView 이미지로드가 올바른 셀을 가져올 수 없습니다. 3
if (imageNotInCache) {
DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
if let thumb = imageFromPathAndCacheIt(path) {
DispatchQueue.main.async {
let updateCell = collectionView.cellForItem(at: indexPath) as! MyCustomCell? {
updateCell.imageView.image = thumb
}
}
}
문제는가, 가끔은 updateCell
를 얻을 수 (아마 스크롤 빨리하기 때문에).
이미지를 추가 한 후 reloadData
을 추가 할 수 있습니다. Swift 3: Caching images in a collectionView과 같지만 재로드를 여러 번 호출하고 싶지는 않습니다.
이 질문에 관심을 가져 주셔서 감사합니다. 모든 아이디어는 매우 높이 평가 될 것입니다!
감사합니다 ! 이렇게하면 모든 이미지를 올바른 셀에 표시 할 수 있습니다. 하지만 이제는 처음으로 스크롤되는 것이 움직이지 않게됩니다 ... 업데이트하기위한 올바른 셀을 얻는 방법이 있는지 궁금합니다. –
걱정할 필요가 없습니다! 흠, 앱 작동 방식에 대해 잘 모른 채 잘 모르겠습니다! 인스 트루먼 테이션을 사용하여 스크롤하는 동안 주 스레드를 차단하는 요소를 정확하게 볼 수 있습니다. 만약 당신이 이것을하고 있지 않다면, 배경 스레드에'UIImage'를 단순히 만들면 이미지가 메모리로 디코드되지 않습니다. 이미지보기가 화면에 나타날 때 느리게 발생합니다. 이로 인해 대부분의 스크롤보기 지연이 발생할 수 있습니다. UIImage가 백그라운드에서 미리 해독되도록 명시 적으로 강제하는 방법에 관한 많은 질문이 있습니다. http://stackoverflow.com/questions/3904575/decode-images-in-background-thread – TiM
스크롤 성능을 향상시키기 위해 일반적으로 할 수있는 최적화가 많이 있습니다. https://medium.com/ios-os-x-development/perfect-smooth-scrolling-in-uitableviews-fd609d5275a5#.t8tw7ojhp – TiM