如何从 UIImageView 的扩展内部设置 KingFisher v5.0.0 中的 indicatorType?
How to set indicatorType in KingFisher v5.0.0 from inside an extension on UIImageView?
我能够做这样的事情(使用版本 4.10.1
):
extension UIImageView {
func test() {
self.kf.indicatorType = .activity
}
}
现在版本 5.0.0 不再可能出现以下错误:
Cannot assign to property: 'self' is immutable
我仍然可以从分机外正常设置它。有没有办法从 UIImageView
扩展中设置 indictorType?
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()
}
}
}
在库GitHub repository的这个issue中,原来kf
变量现在引用了Kingfisher
中出于性能考虑的结构,所以我们处理它需要为它创建一个副本,如下所示:
extension UIImageView {
func test() {
var kf = self.kf
kf.indicatorType = .activity
}
}
我能够做这样的事情(使用版本 4.10.1
):
extension UIImageView {
func test() {
self.kf.indicatorType = .activity
}
}
现在版本 5.0.0 不再可能出现以下错误:
Cannot assign to property: 'self' is immutable
我仍然可以从分机外正常设置它。有没有办法从 UIImageView
扩展中设置 indictorType?
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()
}
}
}
在库GitHub repository的这个issue中,原来kf
变量现在引用了Kingfisher
中出于性能考虑的结构,所以我们处理它需要为它创建一个副本,如下所示:
extension UIImageView {
func test() {
var kf = self.kf
kf.indicatorType = .activity
}
}