2017-05-14 22 views
1

私はTab Bar ControllerとポッドUICircularProgressRingを使ってタイマーをアニメートします。私はタイマーコントローラーから最初のコントローラーに切り替えると右に戻り、タイマーコントローラーのアニメーションは即座に終了に設定されます。バックグラウンドアニメーションで実行することができますので、アニメーションを元の状態に戻して、表示を隠したり再表示したりすることができます。ios Tab Bar Controllerアニメーション

ここには問題があるgifがあります。

via GIPHY

編集1

ここで私はhttps://giphy.com/gifs/ios-animation-timer-3ohzdGYkzbc1gjnUPe

+0

いくつかのコードを表示できますか? –

+0

ここでは、リングアニメーション 'ring.setProgress(値:CGFloat(10)、animationDuration:TimeInterval(10))'を開始するためのコードを1行だけ示しています。 – lightofsky

+0

この行をどこに追加しますか? –

答えて

0

の作業コードの作業を取得する方法の例です:私はすべての時間のVCがすることを発見し

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 
    } 
} 

を消えるUICircularProgressRingポッドマークringが完成しました。トリックは私がvcを離れるたびにcurrentValueを保存することです。 vcに戻った後、私はリングの進捗状況を古い値に設定し、その後はmaxValueへの進捗を続けます。

currentValueがmaxValueに来るとanimationDurationで作業して、アニメーションをよりスムーズにすることができます。

+0

いくつかのリングオプションを設定できるストーリーボードからmaxValueを10に設定しました。 – lightofsky

+0

'maxValue = 10'で' setProgress(value:CGFloat(10)... ')を使うと、なぜ円が完成したのか驚いたのですが、何を達成したいのですか? ?:) –

+0

開始値が0の場合、maxValueを10に設定し、setProgressを10に設定し、duration 10で、maxValueが100、値10および継続時間10、円アニメーションがあった場合、リングが10秒で0から10になることを意味します。 10秒で全サークルから10%のようになります。 maxValueについてはありません。最初の投稿ではgifをご覧ください。 – lightofsky

関連する問題