我正在使用Tab Bar Controller
和 pod UICircularProgressRing
来制作计时器的动画,当我从计时器控制器切换到第一个控制器并立即返回时,计时器控制器中的动画立即设置为结束。是否可以在后台动画中运行,因此当我切换回动画时,继续运行,就像您只是隐藏和取消隐藏视图一样?
这是一个有问题的 gif。
通过吉菲
编辑 1
这是一个我想如何开始工作的示例 https://giphy.com/gifs/ios-animation-timer-3ohzdGYkzbc1gjnUPe
工作代码:
import UIKit
import UICircularProgressRing
class TimerCountdownViewController: UIViewController {
@IBOutlet weak var ring: UICircularProgressRingView!
var currentValue: CGFloat?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
ring.setProgress(value: currentValue ?? 0, animationDuration: 0.0) { [weak self] in
self?.ring.setProgress(value: 10.0, animationDuration: 8.0)
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
currentValue = ring.currentValue
}
}
我发现每次 vc 消失UICircularProgressRing
pod 都会ring
标记为已完成。诀窍是我每次离开 vc 时都会保存currentValue
。回到vc后,我将环的进度设置为旧值,然后我继续进度到maxValue。
您可以在当前值达到最大值时进行animationDuration
,以使动画更流畅。