由于thumbTintColor的变化导致UISwitch开/关状态变化之间的动画

时间:2017-12-11 19:54:50

标签: ios swift uiswitch

我已经获得了一个设计,其中每个UISwitch都有一个thumbTintColor,因为它处于开启状态,另一个关闭状态。我想要实现的是实现这个设计,但到目前为止,我不知道为什么动画本来应该从右到左过渡拇指,或者相反,因为缺少更合适的单词得到完全搞砸了。

基本上,当一个开关被拇指敲击而不是从一端滑动到另一端时,它会变形并立即出现在开关的另一端。这就像我可以描述失真一样近,而不提供实际异常的视频。

我的,尽管很疯狂,但我猜测这与UIKitanimatable的内部运作有关,或与某些UIControls的属性缺乏有关。到目前为止,我所得到的唯一结论是抛弃了标准UISwitch并制定了一个习惯UIControl,这对于这件微不足道的事情来说似乎有些过分。

重现此行为的代码在以下方法中连接到tableView单元格中的UISwitch

    @IBAction func allWheelDriveSwitchValueChanged(_ sender: UISwitch) {
    if sender.isOn {
        sender.thumbTintColor = AppColor.myYellow
    } else {
        sender.thumbTintColor = AppColor.darkGray
    }
} 

其中AppColor是包含预设UIColor个对象的枚举。我已经尝试将这个放在动画块中,并从单元格的contentView调用layoutIfNeeded,但无济于事。

非常感谢任何帮助或见解。

1 个答案:

答案 0 :(得分:0)

你试过这个吗

@IBAction func allWheelDriveSwitchValueChanged(_ sender: UISwitch) {
    if sender.isOn {
        sender.thumbTintColor = UIColor.yellow
    } else {
        sender.thumbTintColor = UIColor.darkGray
    }
}

而不是

@IBAction func allWheelDriveSwitchValueChanged(_ sender: UISwitch) {
    if sender.isOn {
        sender.thumbTintColor = AppColor.myYellow
    } else {
        sender.thumbTintColor = AppColor.darkGray
    }
} 

这是enums的内容:

  

放弃原始类型的缺点是你必须提供一些   用于解析已知枚举值的逻辑。然而,好处是   你可以在保持的同时将任何其他东西放入一个未知的案例中   实际的"未知"价值可供以后使用