我已经获得了一个设计,其中每个UISwitch
都有一个thumbTintColor
,因为它处于开启状态,另一个关闭状态。我想要实现的是实现这个设计,但到目前为止,我不知道为什么动画本来应该从右到左过渡拇指,或者相反,因为缺少更合适的单词得到完全搞砸了。
基本上,当一个开关被拇指敲击而不是从一端滑动到另一端时,它会变形并立即出现在开关的另一端。这就像我可以描述失真一样近,而不提供实际异常的视频。
我的,尽管很疯狂,但我猜测这与UIKit
和animatable
的内部运作有关,或与某些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
,但无济于事。
非常感谢任何帮助或见解。
答案 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的内容:
放弃原始类型的缺点是你必须提供一些 用于解析已知枚举值的逻辑。然而,好处是 你可以在保持的同时将任何其他东西放入一个未知的案例中 实际的"未知"价值可供以后使用