2016-06-18 3 views
0

私は毎秒ボタンのタイトルと色を変更しようとしていますが、ラグがあります。何が起こるかは、それが黄色から赤色に変わると、ボタンはRを表示します。ボタンが変わるたびに発生するのではなく、わずか数回です。これは私が持っているコードです。ボタンのタイトルと色を変更するときの遅延を防ぐにはどうすればいいですか?

@IBOutlet var tapButton: UIButton! 

var color:[UIColor] = [UIColor.redColor(), UIColor.blueColor(), UIColor.yellowColor(), UIColor.greenColor()] 

var colorName:[String] = ["RED", "BLUE", "YELLOW", "GREEN"] 

func game(){ 
    timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(SecondViewController.subtractTime), userInfo: nil, repeats: true) 
} 

func subtractTime(){ 
    seconds -= 1 

    let num1 = Int(arc4random_uniform(4)) 
    let num2 = Int(arc4random_uniform(4)) 

    tapButton.titleLabel?.textColor = color[num1] 
    tapButton.setTitle(colorName[num2], forState: UIControlState.Normal) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 

    game() 
} 
+0

このコードは正常です。メインスレッドで実行されている、CPUを使用している他のコードがありますか?このコードは、メインスレッドが利用可能なときにのみ実行されるため、メインスレッドの別の場所で長時間実行しているコードがあると、更新が遅れることになります。 – vacawama

+0

あなたはNSTimerへの参照を保持すべきではありませんが、おそらく2つのタイマーを作成しているように思えます。 –

+0

私はシングルビューコントローラを使用しており、複数のビューコントローラを持ち、それぞれ独自のviewcontroller.swiftファイルを持っています。 – user2303213

答えて

0

私はセグを詳細を表示に変更しました。これは私の問題を解決したようです。また、ビューコントローラを変更するとタイマーが停止します。

私が以前に経験していた遅れはもうなくなりました。

関連する問題