Ios 如何在运行时更改子视图(UIImageView)中的图像?

Ios 如何在运行时更改子视图(UIImageView)中的图像?,ios,iphone,Ios,Iphone,我有一个带有5个UIImageView的uiStackView,我需要在运行时更改此imageView中的图像 现在,我删除了所有子视图,生成了新的UIImageView,并像子视图一样添加了它,但这对性能来说是一种糟糕的做法。我试试看: let targetStar = Int(floorf(value * Float(uiStars.subviews.count))) - 1 let factor = CGFloat(min(1, max(self.value, 0))) let stars

我有一个带有5个UIImageView的uiStackView,我需要在运行时更改此imageView中的图像

现在,我删除了所有子视图,生成了新的UIImageView,并像子视图一样添加了它,但这对性能来说是一种糟糕的做法。我试试看:

let targetStar = Int(floorf(value * Float(uiStars.subviews.count))) - 1
let factor = CGFloat(min(1, max(self.value, 0)))
let starsCount = uiStars.subviews.count
uiStars.subviews.forEach { $0.removeFromSuperview() }

for i in 0..<starsCount {
    if i < targetStar {
        let starView = UIImageView(image: star!.maskWithColor(color: UIColor.blue.cgColor, factor: 0))
        starView.contentMode = .scaleAspectFit
        uiStars.addArrangedSubview(starView)
    }
    else if i == targetStar {
        let starView = UIImageView(image: star!.maskWithColor(color: UIColor.blue.cgColor, factor: factor))
        starView.contentMode = .scaleAspectFit
        uiStars.addArrangedSubview(starView)
    }
    else {
        let starView = UIImageView(image: star!)
        starView.contentMode = .scaleAspectFit
        uiStars.addArrangedSubview(starView)
    }
}
让targetStar=Int(floorf(value*Float(uiStars.subviews.count))-1
let factor=CGFloat(最小值(1,最大值(自身值,0)))
让starscont=uiStars.subviews.count
uiStars.subviews.forEach{$0.removeFromSuperview()}
对于0..中的i,这是工作:

let targetStar = Int(floorf(value * Float(uiStars.subviews.count))) - 1
let factor = CGFloat(min(1, max(self.value, 0)))
let starsCount = uiStars.subviews.count

for i in 0..<starsCount {
    if i < targetStar {
      let view = uiStars.subviews[i] as! UIImageView
      view.image = star!.maskWithColor(color: UIColor.blue.cgColor, factor: 0)
    } else if i == targetStar {
        let view = uiStars.subviews[i] as! UIImageView
        view.image = star!.maskWithColor(color: UIColor.blue.cgColor, factor: factor)
    } else {
        let view = uiStars.subviews[i] as! UIImageView
        view.image = star!
    }
}
让targetStar=Int(floorf(value*Float(uiStars.subviews.count))-1
let factor=CGFloat(最小值(1,最大值(自身值,0)))
让starscont=uiStars.subviews.count
因为我在0。。
let targetStar = Int(floorf(value * Float(uiStars.subviews.count))) - 1
let factor = CGFloat(min(1, max(self.value, 0)))
let starsCount = uiStars.subviews.count

for i in 0..<starsCount {
    if i < targetStar {
      let view = uiStars.subviews[i] as! UIImageView
      view.image = star!.maskWithColor(color: UIColor.blue.cgColor, factor: 0)
    } else if i == targetStar {
        let view = uiStars.subviews[i] as! UIImageView
        view.image = star!.maskWithColor(color: UIColor.blue.cgColor, factor: factor)
    } else {
        let view = uiStars.subviews[i] as! UIImageView
        view.image = star!
    }
}