Timer.scheduledTimer
でUILabelを使ってカウントアップ描写を行いながら、同一画面上にあるUICollectionView
をスクロールさせたいのですが、UICollectionView
スクロール中はUILabelのカウントアップが停止してしまいます。双方ともUIの更新なのでメインスレッドで行わなければならないのでしょうが、メインスレッドで、同時に複数UI更新系のタスクを処理するということができるのでしょうか?
swift
1// UILabelカウントアップ処理 2 // 呼び出し側 3 @IBAction func coverViewTapped(_ sender: UITapGestureRecognizer) { 4 StartTime = Date().timeIntervalSince1970 5 Timer = Timer.scheduledTimer(timeInterval: 0.02, target: self, selector: #selector(self.updateLabel), userInfo: nil, repeats: true) 6 } 7 8// 呼び出され側 9// Labelの数値をアップデートする関数 10 @objc func updateLabel() { 11 self.DisplayTime = Date().timeIntervalSince1970 - self.StartTime 12 // 時間を小数点前後で分割(小数点以下は2桁だけ取得) 13 let sec = Int(self.self.DisplayTime) 14 let msec = Int((self.DisplayTime - Double(sec)) * 100 ) 15 // XX:XX.XX形式でラベルに表示する 16 let displayStr = NSString(format: "%02d:%02d.%02d", sec/60, sec%60, msec) as String 17 self.TimerLabel.text = displayStr 18 } 19
現状、UILabelのカウントアップ動作はできているのですが、カウントアップ中に同一画面上にあるcollectionViewをスクロールさせると
スクロール動作中のみ、カウントアップが一時停止してしまいます。
回答2件
あなたの回答
tips
プレビュー