2016-03-28 18 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

このdocに見える:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/

あなたが迅速で

を指定し、すべての時間間隔セレクタを実行することができscheduledTimerWithTimeIntervalという名前の関数があります: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ターゲット:セルフセレクタ:@selector(functionName)userInfo:nil repeats:YES];

1
は、

この要件をアニメーションに追加しない場合は、を作成します210に必要な期間を割り当て、新しいアニメーションをトリガするために使用します。

アニメーションとタイマーコードをカスタムイメージビュークラスに移動して、アニメーションの開始と停止のインターフェイスを表示することができます。その後、ビューコントロールはタイマー管理コードで複雑にする必要はありません同時に複数のアニメーション画像ビューを持つことができます)。

2

NSTimerを使用する必要があります。以下のコードを使用してください:

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