ユーザーが上にスワイプしてビューを閉じたときに、Today 拡張機能でタイマーを続行するにはどうすればよいですか? ビューを閉じるたびに、ラベルが 5 分にリセットされます。ビューが消えている間、タイマーは必ずしもアニメーション化する必要はありませんが、ビューが再び読み込まれたときに、ビューが消えている間に経過した更新時間を示すアニメーションがスムーズで高速であることを望みます。バックグラウンドでカウントダウンを続けるにはどうすればよいですか? これを行うための最も効率的で論理的な方法は何ですか? ありがとうございました。
これまでの私のコードは次のとおりです。
class TodayViewController: UIViewController, NCWidgetProviding {
var backgroundTaskIdentifier: UIBackgroundTaskIdentifier?
@IBOutlet weak var timerLabel: UILabel!
var counter = 300
var newCount = Int()
var timer: Timer?
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateInfo), userInfo: nil, repeats: true)
RunLoop.main.add(timer!, forMode: RunLoopMode.commonModes)
}
func updateInfo(){
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional
self.timerLabel.text = formatter.string(from: TimeInterval(self.counter))
counter -= 1
print(counter)
}
func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {
completionHandler(NCUpdateResult.newData)
}
override func viewDidDisappear(_ animated: Bool) {
counter -= 1
}
}