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()
}
このコードは正常です。メインスレッドで実行されている、CPUを使用している他のコードがありますか?このコードは、メインスレッドが利用可能なときにのみ実行されるため、メインスレッドの別の場所で長時間実行しているコードがあると、更新が遅れることになります。 – vacawama
あなたはNSTimerへの参照を保持すべきではありませんが、おそらく2つのタイマーを作成しているように思えます。 –
私はシングルビューコントローラを使用しており、複数のビューコントローラを持ち、それぞれ独自のviewcontroller.swiftファイルを持っています。 – user2303213