2016-04-16 5 views
-1

Ich habe eine UIPageViewController mit einer Nummer in der Mitte von jedem VC drin.Aufwärts-/Abwärts-Zahlen-Animation

Ich möchte, dass, wenn ich aus dem Blickfeld streichen die Zahl bei 0 beginnen zu sehen, und zählen, bis es wird auf die richtige Nummer (oder wenn die Zahl negativ ist - count down) wie in diesem gif:

https://d13yacurqjgara.cloudfront.net/users/345970/screenshots/2126044/shot.gif

Wie kann ich das tun?

Vielen Dank!

+1

https://github.com/dataxpress/UICountingLabel Versuchen Sie, diese –

+0

@ khuong291 ich ein 'while' Aussage versucht haben auf das Etikett 1 jedes Mal hinzuzufügen, aber es nicht –

+0

funktionierte @matiboo Thank you! Das ist, was ich gesucht habe –

Antwort

1

Sie können NSTimer verwenden, um dies zu erreichen.

Hier ist ein Beispielprojekt, das ich für Sie erstellt habe.

erstellen Layout wie folgt aus:

enter image description here

Dann in Ihrem ViewController wie so tun:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var countingLabel: UILabel! 
    var number = 0 
    var destinationNumber = 30 
    var timer: NSTimer! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func startButtonTapped(sender: AnyObject) { 
     timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "countUp", userInfo: nil, repeats: true) 
    } 

    func countUp() { 
     if number < destinationNumber { 
      number += 1 
      countingLabel.text = "\(number)" 
     } else { 
      timer.invalidate() 
     } 
    } 
} 

Es wird funktionieren.

+0

Sie müssen diesen NSTimer ungültig machen, sobald Sie damit fertig sind – Hamish

+0

Warum? Wenn ich es nicht annulliere, was passiert in diesem Fall? – Khuong

+0

Es wird weiterhin von der Run-Schleife aufgerufen, was sinnlos und verschwenderisch ist. Wenn Sie 'startButtonTapped' mehrmals aufrufen, werden der Laufschleife mehrere Timer hinzugefügt, was ebenfalls zu einem unerwünschten Ergebnis führen kann. – Hamish