2016-12-27 6 views
-4

今、私のアプリは数秒で実行されるタイマーを持っています。コードをこのように動作させたいと思います。タイマーが10秒に達すると、画像Aが表示され、それ以外の場合は画像Bが表示されます。Swiftの時間間隔に応じてif-else文を作成する方法3

if green { 
    timer.invalidate() 
    startStop.isEnabled = true 
    scoreTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.updateScoreTime), userInfo: nil, repeats: true) 
} 
+0

これで画像aに画像を設定します(意味のあるコードを投稿しなかったため、あなたが話している画像ではなく、画像ではなく)画像を設定し、画像をbに設定するタイマーを開始します10秒後 – Alexander

+2

なぜ毎回タイマーを再スケジュールしていますか?反復タイマを使用し、カウンタ変数を減分またはインクリメントします。表示する画像を決定するためにカウンタの値を使用する – Paulw11

答えて

3

セットimageA。 10秒でimageBを設定するには、スケジュールされたタイマーを使用します。

imageView.image = imageA 
Timer.scheduledTimer(withTimeInterval: 10, repeats: false) { _ in 
    imageView.image = imageB 
} 

注:ブロックでTimerを使用すると、iOSの10以降でのみ使用可能です。古いバージョンのiOSをサポートしている場合は、セレクタを使用するバージョンを使用する必要があります。


あなたupdateScoreTimeルーチンは毎秒呼ばれ、ちょうどイメージを管理することをより多くの、あなたがプロパティの秒数のカウントに保つことができない場合は、次のタイマーが持ち上がったら

imageView.image = imageA 
scoreTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateScoreTime), userInfo: nil, repeats: true) 
count = 0 

を:

func updateScoreTime(_ timer: Timer) { 
    // update score time 
    ... 

    // change picture if >= 10 seconds 
    count += 1 
    if count >= 10 { 
     imageView.image = imageB 
    } 
} 
関連する問題