2016-03-28 27 views
0

Ich habe eine Funktion, die ein Bild aus meiner Sicht "hin und her schütteln" lässt. Ich kann einstellen, wie lange ich es schütteln möchte und die Geschwindigkeit, aber was ich wirklich brauche ist, dass es alle 10 Sekunden schüttet.Funktion im Zeitintervall wiederholen?

Hier ist die Funktion, mit der ich arbeite, es wird einfach einmal in ViewDidLoad aufgerufen, um es einmal zu arbeiten.

func shakeView(){ 

    let shake:CABasicAnimation = CABasicAnimation(keyPath: "position") 
    shake.duration = 0.4 
    shake.repeatCount = 5 
    shake.autoreverses = true 
    shake.speed = 9.0 

    let from_point:CGPoint = CGPointMake(homeLogo.center.x - 5, homeLogo.center.y) 
    let from_value:NSValue = NSValue(CGPoint: from_point) 

    let to_point:CGPoint = CGPointMake(homeLogo.center.x + 5, homeLogo.center.y) 
    let to_value:NSValue = NSValue(CGPoint: to_point) 

    shake.fromValue = from_value 
    shake.toValue = to_value 
    homeLogo.layer.addAnimation(shake, forKey: "position") 
} 

habe ich nicht lucking herauszufinden, hatte, wie ich in der Lage sein könnte, dies zu tun. Jede Hilfe oder Ausrichtung in die richtige Richtung würde sehr geschätzt werden.

Antwort

1

Sieht dieser doc: How can I use NSTimer in Swift?

Beispiel:

override func viewDidLoad() { 
    super.viewDidLoad() 
    //Swift 2.2 selector syntax 
    var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: #selector(MyClass.update), userInfo: nil, repeats: true) 
    //Swift <2.2 selector syntax 
    var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true) 
} 
1

Verwenden Sie den Timer dafür.

[NSTimer ZeitplanedTimerWithTimeInterval: 10 Ziel: Self-Selektor: @Selector (FunktionsName) UserInfo: NULL wiederholt: YES];

1
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/

Es gibt eine Funktion scheduledTimerWithTimeInterval benannt ist, dass Sie einen Selektor jedes Zeitintervall

In swift angeben ausführen kann

Sie würden diese Anforderung nicht zur Animation hinzufügen, Sie würden eineerstellen 210 mit dem erforderlichen Zeitraum und verwenden Sie es, um jede neue Animation auszulösen.

Sie könnten den Animations- und Timer-Code in eine benutzerdefinierte Bildansichtsklasse verschieben, sodass sie ein nettes Start- und Stopp-Animations-Interface darstellen kann. Dann muss Ihr View-Controller nicht durch den Timer-Management-Code kompliziert werden mehrere animierte Bildansichten gleichzeitig haben).

2

Sie müssen NSTimer verwenden. Verwenden Sie den folgenden Code:

override func viewDidLoad() { 
    super.viewDidLoad() 
    var helloWorldTimer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: Selector("shakeView"), userInfo: nil, repeats: true) 
}