我有一个UISlider,我想将其值设置为1到10.我使用的代码是.
let slider = UISlider() slider.value = 1.0 // This works I know that slider.value = 10.0
我想要做的是为UISlider设置动画,以便需要0.5秒才能更改.我不希望它变得更加流畅.
到目前为止我的想法是.
let slider = UISlider() slider.value = 1.0 // This works I know that UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animation: { slider.value = 10.0 } completion: nil)
我正在寻找Swift中的解决方案.
EDITED
经过一番讨论,我想我会澄清两个建议的解决方案之间的差异:
使用内置的UISlider方法.setValue(10.0, animated: true)
.
将此方法封装在一个UIView.animateWithDuration
.
由于作者明确要求改变将需要0.5秒 - 可能由另一个动作触发 - 第二个解决方案是更喜欢.
例如,请考虑将按钮连接到将滑块设置为其最大值的操作.
@IBOutlet weak var slider: UISlider! @IBAction func buttonAction(sender: AnyObject) { // Method 1: no animation in this context slider.setValue(10.0, animated: true) // Method 2: animates the transition, ok! UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: { self.slider.setValue(10.0, animated: true) }, completion: nil) }
UIVIewController
仅使用UISlider
和UIButton
对象运行一个简单的单个应用程序会产生以下结果.
方法1:即时幻灯片(即使animated: true
)
方法2:动画过渡.请注意,如果我们animated: false
在此上下文中设置,则转换将是即时的.