2017-05-14 124 views
1

我正在使用Tab Bar Controller和pod UICircularProgressRing来为定时器设置动画,当我从定时器控制器切换到第一个控制器时,马上就会将定时器控制器中的动画设置为结束。有可能在后台动画中运行,所以当我切换回动画继续运行,就像你隐藏和取消隐藏视图一样?ios标签栏控制器动画

这是一个问题的gif。

via GIPHY

编辑1

这里有一个例子,我想如何工作https://giphy.com/gifs/ios-animation-timer-3ohzdGYkzbc1gjnUPe

+0

你能展示一些代码吗? –

+0

这里只是一行代码来开始铃声动画'ring.setProgress(value:CGFloat(10),animationDuration:TimeInterval(10))' – lightofsky

+0

这里添加这行吗? –

回答

0

工作代码:

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后,我将ring的进度设置为旧值,然后继续前进到maxValue。

当currentValue达到maxValue时,您可以在animationDuration上工作,以使动画更平滑。

+0

我从故事板中设置maxValue为10,您可以在其中设置一些戒指选项。 – lightofsky

+0

所以如果'maxValue = 10'并且你使用了'setProgress(value:CGFloat(10)...'为什么你对这个圆圈完成感到惊讶?你想要达到什么目的?你能更好地解释你的问题的目标是什么?:) –

+0

起始值为0,我将maxValue设置为10,将setProgress设置为10,持续时间为10,这意味着环将在10秒内从0变为10,如果maxValue为100,值为10并且持续时间为10,则循环动画为在10秒钟内从全部10%开始。没有关于maxValue,在第一篇文章中看gif – lightofsky