ios - 为什么我的 UISlider 没有动画?

标签 ios swift animation

根据 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/

相关文章:

ios - 未找到 RealmSwift 框架

ios - Segue 不在 ViewController 之间传递数据

ios - 如何在 UILabel 的文本下绘制内容?

ios - MDM OTA : Last profile in iDevice enrollment

ios - Struct 中的自初始化错误

javascript - 一次应用多个翻译?

javascript - 动画 css/js 波浪不随窗口大小调整大小

ios - 从用户默认值中检索 GMSPlace 实例

ios - 有没有更好的方法从 PDF 文档中删除所有注释?

android - 谷歌在 Android 上为展示的标记绘制弹跳动画?