如何从UIImageView的扩展中在KingFisher v5.0.0中设置indicatorType?

时间:2018-12-13 11:47:10

标签: ios swift kingfisher

我能够执行以下操作(使用版本4.10.1):

extension UIImageView {
    func test() {
        self.kf.indicatorType = .activity
    }
}

现在从5.0.0版开始,由于以下错误,这不再可行:

  

无法分配给属性:“自身”是不可变的

我仍然可以从扩展名外部正常设置它。是否可以从UIImageView扩展名内部设置indictorType?

2 个答案:

答案 0 :(得分:3)

就像本期关于库GitHub repository的问题一样,事实证明kf变量现在引用了Kingfisher中出于性能考虑的结构,因此要处理它,我们需要为它创建一个副本,如下所示:

extension UIImageView {
    func test() {
        var kf = self.kf
        kf.indicatorType = .activity
    }
}

答案 1 :(得分:0)

extension UIImageView {
 func setImages(url:String){
    let activityInd = UIActivityIndicatorView()
    activityInd.center = CGPoint(x: self.frame.size.width  / 2,
                                 y: self.frame.size.height / 2)
    activityInd.color = UIColor.red
    self.addSubview(activityInd)
    activityInd.startAnimating()
    self.kf.setImage(with: URL(string: url), placeholder: #imageLiteral(resourceName: "user-icn"), options: nil, progressBlock: nil) { (img, err, cache, url) in
        activityInd.stopAnimating()
    }
}

}