我在收集視圖中出現非常波濤洶涌的滾動。只有10個電池。這是因爲我檢索圖像的方法是取URL並將其轉爲UIImage數據。UICollectionView快速3 laggy滾動UIImage
圖像變量只是一個圖像URL數組。
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
}
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "mediaCells", for: indexPath) as! MediaCell
let url = URL(string: images[indexPath.row] as! String)
let data = try? Data(contentsOf: url!)
cell.mediaImage.image = UIImage(data: data!)
return cell
}
我找到的解決方案是首先爲所有圖像執行此操作。這種方法的問題在於,在我們顯示collectionView之前,它必須等待所有圖像下載數據並追加到數組。在我們可以渲染集合之前,這可能需要幾秒鐘10-15秒。太慢了!
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(URL(string: "myURL")!,
method: .get)
.responseJSON(completionHandler: {(response) -> Void in
if let value = response.result.value{
let json = JSON(value).arrayValue
for item in json{
let url = URL(string: item["image"].string!)
let data = try? Data(contentsOf: url!)
self.images.append(data)
}
self.collectionView.reloadData()
}
})
}
您正在同步下載圖像,請嘗試異步。很少有第三方庫可以輕鬆實現。 – chengsam
謝謝。我遵循你的建議,並使其運行良好。 –