2016-07-16 10 views
0

NSTimerを使用して、アプリが動作していることをユーザーに知らせる。プログレスバーは3秒間持続するように設定されていますが、実行しているときには動きが「チック」で、滑らかではありません。とにかく私はそれをより滑らかにすることができます - 私は確かに私の部分の計算エラーです。ここでUIProgressViewがNSTimerで期待どおりに動作しない - Swift

はコードです:アップルのiOS SDKのドキュメントを1として

import UIKit 

class LoadingScreen: UIViewController { 

    var time : Float = 0.0 
    var timer: NSTimer? 

    @IBOutlet weak var progressView: UIProgressView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do stuff 

     timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector:Selector("setProgress"), userInfo: nil, repeats: true) 

    } //close viewDidLoad 

    func setProgress() { 
     time += 0.1 
     progressView.progress = time/3 
     if time >= 3 { 
      timer!.invalidate() 
     } 
    } 
} 

答えて

0

あなたは次のAPIを使用してそれを達成することができます

func setProgress(_ progress: Float, animated animated: Bool) 

それは、受信機によって示される現在の進行状況を調整しますオプションで変更をアニメーション化する。

パラメータ:
progress - 新しい進捗値。

animated - true変更を有効にする必要がある場合は、false変更をすぐに実行する必要がある場合。
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIProgressView_Class/index.html#//apple_ref/occ/instm/UIProgressView/setProgress:animated

だからあなたの場合には、あなたがこのようにそれを実行する必要があります。この上

詳細情報

func setProgress() { 
    time += 0.1 

    dispatch_async(dispatch_get_main_queue()) { 
     progressView.setProgress(time/3, animated: true) 
    } 

    if time >= 3 { 
     timer!.invalidate() 
    } 
} 

はまた、メインにUIの更新を実行することをお勧めであることに注意してくださいスレッド、私はメインキューの進捗状況の更新をディスパッチしました。
お手数ですがお手伝いします。

+0

あなたの返信ありがとう 私はあなたが私の質問を正しく取得しなかったと思います。私の進歩はうまく働いていて、アニメーションも –

関連する問題