UISwitch 的奇怪行为
Weird behavior of the UISwitch
我的开关动画卡在开和关之间。它发生在开关超出屏幕边界后(开关位于 table 视图单元格内)。如果我不让单元格超出屏幕边界,我就不会遇到这个问题。我已经设置了断点来弄清楚发生了什么,并意识到这发生在我改变开关值的那一刻。下面的 GIF 是为了更好地理解我的意思。第一个显示我想要修复的行为。第二个还可以。
[
我自己设法解决了这个问题。我没有 post 代码,因为代码太多了,我可以 post 全部放在这里。但如果有人遇到同样的问题 - 这是解决方案。
事实证明,在重复使用单元格时(单元格从屏幕上消失),所有内容都没有从中删除。在它们再次出现在屏幕上之后,我最终将多个开关堆叠在一起。我所做的就是在初始化新开关之前将 switch.removeFromSuperview() 添加到我的 cell.set 方法中。
func setSwitch() {
switchControl?.removeFromSuperview()
lockedPic.removeFromSuperview()
switchControl = CustomSwitch(number: self.tag)
contentView.addSubview(switchControl!)
NSLayoutConstraint.activate([
switchControl!.leadingAnchor.constraint(equalTo: self.trailingAnchor, constant: -61),
switchControl!.centerYAnchor.constraint(equalTo: self.centerYAnchor)
])
}
我的开关动画卡在开和关之间。它发生在开关超出屏幕边界后(开关位于 table 视图单元格内)。如果我不让单元格超出屏幕边界,我就不会遇到这个问题。我已经设置了断点来弄清楚发生了什么,并意识到这发生在我改变开关值的那一刻。下面的 GIF 是为了更好地理解我的意思。第一个显示我想要修复的行为。第二个还可以。
[
我自己设法解决了这个问题。我没有 post 代码,因为代码太多了,我可以 post 全部放在这里。但如果有人遇到同样的问题 - 这是解决方案。
事实证明,在重复使用单元格时(单元格从屏幕上消失),所有内容都没有从中删除。在它们再次出现在屏幕上之后,我最终将多个开关堆叠在一起。我所做的就是在初始化新开关之前将 switch.removeFromSuperview() 添加到我的 cell.set 方法中。
func setSwitch() {
switchControl?.removeFromSuperview()
lockedPic.removeFromSuperview()
switchControl = CustomSwitch(number: self.tag)
contentView.addSubview(switchControl!)
NSLayoutConstraint.activate([
switchControl!.leadingAnchor.constraint(equalTo: self.trailingAnchor, constant: -61),
switchControl!.centerYAnchor.constraint(equalTo: self.centerYAnchor)
])
}