2016-04-02 18 views
7

Bir numarayı gösteren bir etiketim var ve bunu daha yüksek bir sayıya değiştirmek istiyorum, ancak, ona biraz parlama eklemek istiyorum. Kolaylık-in-out eğrisi ile daha yüksek sayıya kadar artan bir sayıya sahip olmak isterim, böylece hızlanır ve yavaşlar. Lütfen, bunu nasıl hızlıca uygulayacağınızı, İşte benim kodum. Teşekkürler.Hızlı bir şekilde UILabel'de artan sayıyı nasıl canlandırırsınız?

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

daha hassas nasıl görünmelidir biraz anlatabilir misiniz? Ör. Yeni değer aynı yerde kaybolurken eski değer kayboluyor mu? Ya da yenisi bir sıraya girerken, eski olanı bir kenara bırakır mı? Veya hedefiniz nedir? –

+0

Olası kopyası: http://stackoverflow.com/questions/33632266/animate-text-change-of-uilabel – NikxDa

cevap

3

Tamamen hızlı bir şekilde aşina değilim. Ama bunu daha önce parabolik bir eğri kullanarak uygulamıştım. Daha ayrıntılı olarak, az çok olan şey temel cebirdir. Bir eksende bir x değerine ve sonra da zaman ekseninde y'ye sahip bir grafiğiniz var. Her animasyonun arasındaki zaman gecikmesinin bir platoya ulaşana kadar artmasını istersiniz. Örneğin

: her artıştan daha fazla olduğunu

x = 1 gecikmesi = 100ms, x = 2 ila gecikmesi = 200ms, x = 3, gecikme = 310ms, X = 4 gecikmesi = 430ms

bildirim önceki. Matematiksel

böyle bir eğim elde etmek için, aşağıdaki formüle sahip bir ön oturup örneğin,

y = -x + x^2

enter image description here

ve sen kadar bu oynayabilir bir çıktının alınmasını istediğiniz gibi, x'in her artışında, bir animasyonda temiz görünecek güzel bir yavaşlamaya karşılık gelirsiniz.

bunu yapacak dahil kütüphaneler, ben hızlı bir arama ile buldum

Neyse Elma olarak :

UIViewAnimationOptions.CurveEaseOut 

Bu kütüphane size burada, sonra hızlı başlayan yavaşlatır bir eğri verecektir Apple Documentation geri kalanı

1

bu kontrol edin:

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

} 
İlgili konular