UISwitch打开/关闭动画,同时动画制作onTintColor'

时间:2017-07-09 23:46:18

标签: ios animation core-animation uiviewanimation ios-animations

我想动画一下' on' UISwitch的颜色并保持它可以互动,不会影响它的开/关动画。这就是我的尝试:

  1. UIView用持续时间法制作的动画效果并不好......因为它... 不应该,onTintColor'并未列为可动画的属性 UIView的。细

    mySwitch.onTintColor = UIColor.green
    
    UIView.animate(withDuration: 10) {
        mySwitch.onTintColor = UIColor.red
    }
    
  2. 下一步。 UIView使用view方法的转换提供了一些正确的视觉行为,但是当与交换机交互时,默认的开/关动画会受到影响(请参阅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
    
  4. via GIPHY

    任何人都有任何想法如何为onTintColor' onTintColor'不影响默认的开/关动画?

    这样做的唯一方法是创建自定义开关吗?

1 个答案:

答案 0 :(得分:3)

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

animate(withDuration:delay:options:animations:completion:),并传递.allowUserInteraction

的选项