2017-12-11 3 views
0

数字の10から始まって毎秒カウントダウンするアプリケーションを作成しました。カウントダウンはアニメーションです。コードは次のとおりです。タイマでUIView.animateを実行する

import UIKit 

class ViewController: UIViewController { 

    var startNumber = 10 

    lazy var numberLabel: UILabel = { 
     let label = UILabel() 
     label.translatesAutoresizingMaskIntoConstraints = false 
     label.font = label.font.withSize(160) 
     label.textColor = .lightGray 
     return label 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     view.backgroundColor = .white 

     view.addSubview(numberLabel) 

     NSLayoutConstraint.activate([ 
      numberLabel.centerXAnchor.constraint(equalTo: view.centerXAnchor), 
      numberLabel.centerYAnchor.constraint(equalTo: view.centerYAnchor) 
      ]) 

     _ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (time) in 

      self.numberLabel.text = String(self.startNumber) 
      self.startNumber -= 1 

      UIView.animate(withDuration: 0.99, animations: { 
       self.numberLabel.alpha = 0 
      }, completion: { (true) in 
       self.numberLabel.alpha = 1 
      }) 

     } 
    } 

} 

UIViewとTimerの間隔が等しい場合、カウントダウンで不均一な数値のアニメーションが表示されます。そのため、コードでは、UIView間隔が1ではなく0.99に設定され、すべての数値に対してアニメーションカウントダウンが表示されます。なぜ)

1:アニメーションはまだあなたがミリ秒で数字「フリック」を見ることができるので、スムーズではありませんが、私は間隔が150に設定されている代わりの1

私の質問があるので、それだと仮定しますUIViewとTimerで等しい間隔を設定すると、奇数のカウントダウンアニメーションになりますか?

2)カウントダウンのカウントは1秒ごとまたは0.99秒間カウントダウンされますか?

答えて

1

変更すること

_ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (time) in 


     self.startNumber -= 1 

     self.numberLabel.alpha = 1 

     UIView.setAnimationCurve(UIViewAnimationCurve.easeInOut) 

     UIView.animate(withDuration: 1, animations: { 

      self.numberLabel.text = String(self.startNumber) 
      self.numberLabel.alpha = 0 
     }, completion: { (true) in 

     }) 

    } 
+0

これは完全に動作します、ありがとうございます! – Hapeki

1

1見えるようにコード)なぜ奇数のカウントダウンアニメーションのUIViewとタイマ結果に等しい間隔を設定しますか?

Ans:等しい時間を設定すると、以前のアニメーションが必ず新しいアニメーションと重なります。より少ない時間を置く方が良い。さらに0.99未満

2)カウントダウンのカウントは1秒ごとまたは0.99秒間カウントダウンされますか?

Ans:アニメーションタイマーに関係なく、毎秒カウントダウンが発生します

関連する問題