为什么我的UISlider不是动画?

sli*_*fty 12 animation ios swift

根据Apple的文档,可以通过编程方式设置具有平滑动画的UISlider的值.我试图从自定义视图控制器执行此操作,UI正在从故事板中定义.

上下文

在我的示例中,我试图从自定义视图控制器更新滑块值,UI正在从故事板中定义.该示例仅呈现单个滑块.

当用户释放滑块时,该值将重置为0.

代码

import UIKit

class ViewController: UIViewController {

    @IBOutlet var mySlider: UISlider!
    @IBAction func resetSlider() {
        mySlider.setValue(0, animated:true)
        NSLog("Reset!")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}
Run Code Online (Sandbox Code Playgroud)

resetSliderTouch Up Inside事件有关.

问题

resetSlider调用时,接口上的值确实发生了变化,但它没有动画(该值只是"跳转"到0).我的目标是让价值优雅地回归到零.

注意:"重置!" 仅显示一次(每次点击),表示resetSlider未多次调用.

为什么这个UISlider没有动画?

该视频

由于IB是如此直观,这里是一个视频的情况,密码是code

f3n*_*1kc 43

setValue animated参数实际上不执行动画,而是启用动画.

要触发动画,您需要使用UIView.animateWithDuration,并将setValue命令作为动画传递:

UIView.animateWithDuration(0.2, animations: {
  self.mySlider.setValue(0, animated:true)
})
Run Code Online (Sandbox Code Playgroud)