根据 Apple 的 documentation ,可以以编程方式设置具有平滑动画的 UISlider 的值。我正在尝试从自定义 View Controller 执行此操作,UI 是从 Storyboard 中定义的。
背景
在我的示例中,我尝试从自定义 View Controller 更新 slider 值,UI 是从 Storyboard 中定义的。该示例仅呈现单个 slider 。
当用户释放 slider 时,该值重置为 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()
}
}
resetSlider
链接到 Touch Up Inside
事件。
问题
当 resetSlider
被调用时,界面上的值确实发生了变化,但它没有动画(值只是“跳”到 0)。我的目标是让值优雅地移回零。
注意:“重置!”仅显示一次(每次点击),这表明 resetSlider
未被多次调用。
为什么这个 UISlider 没有动画?
视频
由于 IB 非常直观,here is a video在这种情况下,密码是 code
最佳答案
setValue animated
参数实际上并不执行动画,而是启用动画。
要触发动画,需要使用UIView.animateWithDuration , 并传入 setValue 命令作为动画:
UIView.animateWithDuration(0.2, animations: {
self.mySlider.setValue(0, animated:true)
})
swift 5
UIView.animate(withDuration: 0.2, animations: {
self.mySlider.setValue(0, animated:true)
})
关于ios - 为什么我的 UISlider 没有动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906312/