QuartzCore를 사용하여 스톱워치 표시를 00:00:00부터 시작할 수있는 방법을 찾을 수 없습니다. 항상 07:00:00에 시작합니다.Swift에서 기본값 07:00:00 대신 00:00:00으로 elapsedTime을 시작하는 방법
시작 시간의 서식을 00:00:00으로 지정하는 방법이 있습니까? 코드는 다음과 같습니다.
감사합니다.
클래스 : 아래의 코멘트에 언급 한 바와 같이 시정
import Foundation
import QuartzCore
class StopWatch: NSObject{
private var displayLink: CADisplayLink!
private let formatter = DateFormatter()
var callback: (() -> Void)?
var elapsedTime: CFTimeInterval!
override init() {
super.init()
self.displayLink = CADisplayLink(target: self, selector: #selector(tick(sender:)))
displayLink.isPaused = true
displayLink.add(to: RunLoop.main, forMode: RunLoopMode.commonModes)
self.elapsedTime = 0.0
formatter.dateFormat = "HH:mm:ss"
}
convenience init(withCallback callback: @escaping() -> Void) {
self.init()
self.callback = callback
}
deinit {
displayLink.invalidate()
}
func tick(sender: CADisplayLink) {
elapsedTime = elapsedTime + displayLink.duration
callback?()
}
func elapsedTimeAsString() -> String {
return formatter.string(from: Date(timeIntervalSinceReferenceDate:elapsedTime))
}
}
시간대 문제와 비슷합니다. GMT + 7에 계시나요? 포맷터의 시간대를 GMT로 설정하십시오. – Thilo
포인터를 보내 주셔서 감사합니다. formatter.timeZone = NSTimeZone (이름 : "GMT")을 추가했습니다! as TimeZone – Starkus