Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ui在设置动画时打开/关闭动画';onTintColor';_Ios_Animation_Core Animation_Uiviewanimation_Ios Animations - Fatal编程技术网

Ios ui在设置动画时打开/关闭动画';onTintColor';

Ios ui在设置动画时打开/关闭动画';onTintColor';,ios,animation,core-animation,uiviewanimation,ios-animations,Ios,Animation,Core Animation,Uiviewanimation,Ios Animations,我想为UISwitch的“开”色设置动画,并保持其可交互性,同时不影响其开/关动画。以下是我尝试过的: UIView的“使用持续时间设置动画”方法不起作用,因为 不应将“onTintColor”列为的可设置动画的属性 尤维尤。好的 mySwitch.onTintColor = UIColor.green UIView.animate(withDuration: 10) { mySwitch.onTintColor = UIColor.red } 下一个。UIView的transit

我想为UISwitch的“开”色设置动画,并保持其可交互性,同时不影响其开/关动画。以下是我尝试过的:

  • UIView的“使用持续时间设置动画”方法不起作用,因为 不应将“onTintColor”列为的可设置动画的属性 尤维尤。好的

    mySwitch.onTintColor = UIColor.green
    
    UIView.animate(withDuration: 10) {
        mySwitch.onTintColor = UIColor.red
    }
    
  • 下一个。UIView的transition with view方法提供了某种正确的视觉行为,但当和开关交互时,默认的开/关动画会被破坏(参见GIF)

  • CATTransition提供了与no.2相同的行为(参见GIF)

  • 有人知道如何在不影响默认开/关动画的情况下设置“onTintColor”的动画吗


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

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


    设置动画(持续时间:延迟:选项:动画:完成:)
    ,并传入
    的选项。默认情况下,动画期间禁用allowUserInteraction

    。尝试使用较长形式的UIView动画


    设置动画(持续时间:延迟:选项:动画:完成:)
    ,并传入
    的选项。allowUserInteraction

    感谢您的建议。将该选项传递给transition with view会按照它所说的做,这很好,但也会影响开关的默认开/关动画。请看我的编辑和链接GIF:)谢谢你的建议。将该选项传递给transition with view会按照它所说的做,这很好,但也会影响开关的默认开/关动画。请查看我的编辑和链接GIF:)
    UIView.transition(with: mySwitch, duration: 10, options: [.transitionCrossDissolve, .allowUserInteraction], animations: { 
        mySwitch.onTintColor = UIColor.red
    }) { completed in
    }
    
    var transition = CATransition()
    transition.type = kCATransitionFade
    transition.duration = 10
    mySwitch.layer.add(transition, forKey: kCATransition)
    mySwitch.onTintColor = UIColor.red