2016-04-02 19 views
7

数字を示すラベルがありますが、それを高い数値に変更したいのですが、少しフレアを加えたいと思います。私は、数値がインクリメントされているので、スピードアップが遅くなります。どうか、これを迅速に実装する方法は、ここに私のコードです。ありがとう。素早くUILabelでインクリメントする数字をアニメートする方法

let newValue : Double = 1000 
let oldValue : Double = 500 

timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("countAnimation:"), userInfo: ["oldValue":oldValue, "newValue": newValue], repeats: true) 

func countAnimation(timer: NSTimer) 
{ 
    let dict = timer.userInfo as? [String:AnyObject] 
    var OldTotalValue : Double = (dict!["oldValue"] as? Double)! 
    let newTotalValue : Double = (dict!["newValue"] as? Double)! 

    OldTotalValue = OldTotalValue + 10 


    if newTotalValue < OldTotalValue 
    { 
     timer.invalidate() 
    } 
    else 

    { 
     mylabel.text = String(OldTotalValue) 
    } 
} 
+0

あなたはもう少し正確にそれがどのように見えるべきかを説明することはできますか?たとえば?新しいものが同じ場所でフェードインする間に古い値は消えますか?または、新しい人がピッカーと同じように回っている間に、古い人は別の人に向けるべきですか?あなたの目標は何ですか? –

+0

可能な複製:http://stackoverflow.com/questions/33632266/animate-text-change-of-uilabel – NikxDa

答えて

3

私は完全にスピーディーに精通していません。しかし、これまでは放物線を使ってこれを実装しました。

多かれ少なかれ、何が起きているのかは基本代数です。ある軸に値xを、時間軸にyをとったグラフがあります。各アニメーション間の時間遅延を、高原に達するまで増加させたい。例えば

:すべての増加は以上であること

X = 1遅延= 100msの、x = 2の遅延時間= 200ミリ秒、X = 3遅延= 310ms、X = 4の遅延= 430ms

通知前。

Y = -x + X^2

enter image description here

、あなたまでそれで遊ん:数学的には、このようなスロープを得るために

、次のような式の前に座ることができxの増分ごとにアニメーションをきれいに見せる素晴らしい減速に対応するような出力を得てください。

ありがたいことに、アップルこれを行います含まれたライブラリは、私はクイック検索でそれを見つけたよう:このライブラリはあなたにすぐにその後を開始曲線を与える

UIViewAnimationOptions.CurveEaseOut 

が遅くなり、ここでApple Documentationの残りの部分はあります

1

これを確認してください:

func countAnimation(timer: NSTimer) 
{ 
    UIView.transitionWithView(label, 
          duration: 1.0, 
          options: [.CurveEaseInOut], 
          animations: {() -> Void in 
          // Write your code here 
    }, completion: nil) 

} 
関連する問題