【发布时间】:2021-01-09 04:03:10
【问题描述】:
通常在 swift 中,我可能想要一个属性,当设置时通常会产生动画。换句话说
class SelectableView: UIView {
var isSelected: Bool = false {
willSet {
UIView.animate(withDuration: 0.200) {
self.backgroundColor = .red
}
}
}
}
但是,我意识到这可能不是最佳做法。例如,当我在其他地方使用我的课程时,我可能会不小心做了类似的事情:
let k = SelectableView()
UIView.animate(withDuration: 0.500) {
k.isSelected = true
k.alpha = 1.0
k.backgroundColor = .red // notice this!
}
在那种情况下,甚至会发生什么?那里的行为到底是什么?颜色会在 500 毫秒还是 200 毫秒内变为红色? willSet 与 didSet 重要吗?如果我直接嵌套 UIView.animate 内联而不是在 setter 中会发生什么?
一般来说,在 setter 中有一个动画块可能是一种不好的做法吗?
【问题讨论】:
标签: ios swift uiview uikit uiviewanimation