【问题标题】:Reset UIProgressView After Animation is Complete动画完成后重置 UIProgressView
【发布时间】:2015-09-12 02:29:50
【问题描述】:

我想在以下代码之后重置(将进度设置为 0)我的 UIProgressView:

// uploadProgress: UIProgressView!

uploadProgress.progress = 0
uploadProgress.setProgress(1.0, animated: true)

我不能在这个块之后立即将 uploadProgress.progress 设置为 0,因为这样就不会出现动画。

我也不想编辑动画持续时间。

我只想让进度回到 0AFTER 动画完全完成

非常感谢您的帮助。提前谢谢!

【问题讨论】:

    标签: swift uiview uikit swift2 ios9


    【解决方案1】:

    有点晚了,但我遇到了同样的问题,这就是我解决它的方法。由于UIProgressView 上的动画是在图层上完成的,我们可以使用CATransaction 的完成块来捕捉动画何时结束。

    CATransaction.begin()
    CATransaction.setCompletionBlock({
       // do whatever you want when the animation is completed
       self.progressBar.hidden = true
    })
    self.progressBar.setProgress(1.0, animated: true)
    CATransaction.commit()
    

    【讨论】:

      【解决方案2】:

      您可以将动画 UIView.animate 函数与完成处理程序一起使用。

      UIView.animateWithDuration(1, animations: { () -> Void in
          self.progressBar.setProgress(1, animated: true)
      }, completion: { (Bool) -> Void in
          progressBar.progress = 0
      })
      

      【讨论】:

      • 谢谢!这当然有帮助。现在的问题是它的动画太快了。即使我将持续时间设置为 1000,动画持续时间也不会改变。它保持得非常快。 UIView.animateWithDuration(1000, 动画: { self.uploadProgress.progress = 1 }, 完成: { (Bool) -> Void in self.uploadProgress.progress = 0 })
      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 2011-08-28
      • 1970-01-01
      • 2017-07-11
      • 2013-06-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多