2016-08-23 74 views
1

我使用af_setImageWithURL Alamofire API来获取表格单元格的图像,并通过默认的图像占位符:Alamofire图片:图像占位符未设置为af_setImageWithURL

let defaultImage = UIImage(named:"myImage") 
cell.imageView.af_setImageWithURL(imageURL, placeholderImage:defaultImage, imageTransition: .CrossDissolve(0.1)) 

问题:当我的形象完全不存在下载路径,单元格也不显示默认图像。当我向上滚动表格&(清除并重新使用同一个单元格)时,它就会显示出来。

编辑:

注意到这是离队细胞后发生的事情,我首先重置图像,然后调用Alamofire。如果我在下面注释掉,它可以正常工作,但如果图片网址和默认图片都不可用,我可能会冒着显示旧产品图片的风险。

cell.imageView.image = nil 

有人遇到类似的问题,请指教。

+0

确保图像可用或不可用'defaultImage' –

+0

'defaultImage'完全正常并显示图像。正如我所说,默认图像显示在滚动表上查看。 – Abhinav

+0

可以显示一些与此相关的其他代码 –

回答

1

你需要确保你取消您的请求,并在prepareForReusenil出的图像。否则,你可能遇到几个不同的问题。以下是AFI中iOS ExampleImageCell班。

class ImageCell: UICollectionViewCell { 
    class var ReuseIdentifier: String { return "org.alamofire.identifier.\(type(of: self))" } 
    let imageView: UIImageView 

    // MARK: - Initialization 

    override init(frame: CGRect) { 
     imageView = { 
      let imageView = UIImageView(frame: frame) 

      imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
      imageView.contentMode = .center 
      imageView.clipsToBounds = true 

      return imageView 
     }() 

     super.init(frame: frame) 

     contentView.addSubview(imageView) 

     imageView.frame = contentView.bounds 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    // MARK: - Lifecycle Methods 

    func configureCell(with URLString: String, placeholderImage: UIImage) { 
     let size = imageView.frame.size 

     imageView.af_setImage(
      withURL: URL(string: URLString)!, 
      placeholderImage: placeholderImage, 
      filter: AspectScaledToFillSizeWithRoundedCornersFilter(size: size, radius: 20.0), 
      imageTransition: .crossDissolve(0.2) 
     ) 
    } 

    override func prepareForReuse() { 
     super.prepareForReuse() 

     imageView.af_cancelImageRequest() 
     imageView.layer.removeAllAnimations() 
     imageView.image = nil 
    } 
} 

干杯。

+0

如果我们需要使用带有af_setImage和URLRequest的磁盘缓存, –

0

正如我所提到的,如果我在Alamofire调用之前没有设置细胞图像视图'image nil,那么效果很好。所以,我现在只在默认图像为零时将单元格图像视图的图像设置为零。

cell.imageView.image = nil