У меня есть uiStackView с 5 UIImageViews, мне нужно изменить изображение в этом imageView во время выполнения.
Теперь я удаляю все подпредставления, генерирую новые UIImageViews и добавляю его как подпредставления, но это плохая практика дляспектакль.Я пробую это:
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)
}
}
Я ожидаю что-то подобное
for i in 0..<starsCount {
if i < targetStar {
let view = uiStars.subviews[i]
view.image = star!.maskWithColor(color: UIColor.blue.cgColor, factor: 0)
}
else if i == targetStar {
let view = uiStars.subviews[i]
view.image = star!.maskWithColor(color: UIColor.blue.cgColor, factor: factor)
}
else {
let view = uiStars.subviews[i]
view.image = star!
}
}
Но это не работает.