2016-03-28 115 views
0

我有一個功能,使我的視圖中的圖像「搖」來回。我可以設定我想讓它震動多久,速度如何,但我真正需要的是每10秒震動一次。時間間隔重複功能?

這是我正在使用的函數,它只是在viewDidLoad中調用一次,以使其工作一次。

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") 
} 

我還沒有找到我如何能夠做到這一點。任何幫助或指向正確的方向將不勝感激。

回答

1

只看該文檔:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/

有一個名爲scheduledTimerWithTimeInterval可以執行一個選擇每一個時間間隔功能指定

在SWIFT:How can I use NSTimer in Swift?

樣品:

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

爲此使用計時器。

[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(functionName)userInfo:nil repeatats:YES];

1

您不會將該要求添加到動畫中,您會創建一個NSTimer,並用它來觸發每個新的動畫。

您可以將動畫和計時器代碼移動到自定義圖像視圖類,以便它可以呈現一個很好的開始和停止動畫界面,然後您的視圖控制器不需要由計時器管理代碼變得複雜(如果你是同時具有多個動畫圖像視圖)。

2

您需要使用NSTimer。使用以下代碼:

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