0

我想为 UISwitch 的“开”颜色设置动画并保持它的可交互性,而不影响它的开/关动画。这是我尝试过的:

  1. UIView 的动画持续时间方法不起作用,因为好吧......它不应该,'onTintColor' 没有被列为 UIView 的动画属性。美好的。

    mySwitch.onTintColor = UIColor.green
    
    UIView.animate(withDuration: 10) {
        mySwitch.onTintColor = UIColor.red
    }
    
  2. 下一个。UIView 与视图方法的转换提供了一种正确的视觉行为,但是当与开关交互时,默认的开/关动画会受到影响(参见 GIF)。

    UIView.transition(with: mySwitch, duration: 10, options: [.transitionCrossDissolve, .allowUserInteraction], animations: { 
        mySwitch.onTintColor = UIColor.red
    }) { completed in
    }
    
  3. CATransition 给出与 no 相同的行为。2(见 GIF)。

    var transition = CATransition()
    transition.type = kCATransitionFade
    transition.duration = 10
    mySwitch.layer.add(transition, forKey: kCATransition)
    mySwitch.onTintColor = UIColor.red
    

通过 GIPHY

任何人都知道如何在不影响默认开/关动画的情况下为“onTintColor”设置动画?

正确执行此操作的唯一方法是创建自定义开关吗?

4

1 回答 1

3

默认情况下,动画期间禁用用户交互。尝试使用较长形式的 UIView 动画,

animate(withDuration:delay:options:animations:completion:), 并传入选项.allowUserInteraction

于 2017-07-09T23:57:47.517 回答