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)
    ])
}