У меня есть UICollectionView, где есть изображение в каждой ячейке. Это изображение загружается URL-адресом. Но когда ячейка прокручивается вне поля зрения, она показывает изображение другой ячейки за секунду, прежде чем загрузка снова будет собственной. Я не знаю, почему это происходит.UICollectionView повторяющаяся ячейка
Вот мой код:
Мой расширение UIImageView для загрузки из URL:
extension UIImageView {
public func imageFromUrl(urlString: String) {
Alamofire.request(.GET, urlString).responseJSON{
response in
if let tilbudimage = UIImage(data: response.data!){
self.image = tilbudimage
}
}
}
}
UICollectionView:
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
print(DealArr.count)
return DealArr.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("DealCell", forIndexPath: indexPath) as! DealCell
let deal = self.DealArr[indexPath.row]
cell.backgroundColor = UIColor.whiteColor()
cell.DealImage.imageFromUrl(deal["image"].string!)
cell.DealLabel.text = deal["title"].string! + ", " + String(deal["price"].int!) + "kr."
cell.DealDescription.text = deal["description"].string!
cellarr.append(cell)
return cell
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSizeMake(collectionView.frame.width, 450)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsetsMake(0, 0, 0, 0)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0.0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 1.0
}
Благодарим вас за ответ @esthepiking. Но, установив изображение на ноль перед загрузкой изображения, я вижу белый фон перед отображением изображения (неудивительно, когда я установил изображение в ноль), нет способа, которым он будет загружаться более плавно, например instagram. –
О, вы также можете установить его по умолчанию или загрузить изображение. Это не обязательно должно быть nil, вам просто нужно установить его на что-то, чтобы он не отображал ранее загруженное изображение – esthepiking
ye okay. Но не существует способа, которым я могу предотвратить его загрузку изображения снова, когда он уже загружен в первый раз. Я нахожу, что это раздражает, что каждый раз, когда ячейка выходит из поля зрения, нужно снова делать запрос на изображение, когда оно видимо. В instagram он не ведет себя так. Может ли скорость сервера иметь определенную роль в этом? –