2017-07-29 45 views
0

對不起,如果這是一個新手問題,我很新iOS的&斯威夫特。 我有一個計時器,我知道我可以使用'CADisplayLink',但是如果我使用它,我的計時器中的毫秒數將會跳變,如1,3,7 ... 67,71 ...我不需要這個,我需要1,2,3,4,5 ... 54,55,56,57 ... 在iPhone 7,iPhone 7 Plus,iPhone 5功能相當不錯,但在iPhone SE,iPad Retina,iPad Pro, iPad Air的定時器速度太慢,所以基本上定時器是傾斜的。定時器未同步

定時器不運行的一個默認計時器應用(FPS問題?)

我需要毫秒使每一步好:

func updateStopwatch() { 
    milliseconds += 1 
    print(milliseconds) 
    if milliseconds == 100 { 
     milliseconds = 0 
     seconds += 1 
    } 
    let millisecondsString = milliseconds > 9 ?"\(milliseconds)" : "0\(milliseconds)" 
    let secondsString = seconds > 9 ?"\(seconds)" : "\(seconds)" 
    stopWatchString = "\(secondsString).\(millisecondsString)" 
    labelTimer.text = stopWatchString 
} 

@IBAction func startStopButtonTapped(_ sender: Any) { 
    if isTimerRunning { 
     isTimerRunning = !isTimerRunning 
     timer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(updateStopwatch), userInfo: nil, repeats: true) 
    }else{ 
     isTimerRunning = !isTimerRunning 
     timer.invalidate() 
    } 
} 
+1

兩條評論。 1)顯示屏無法更新,因此不要擔心在定時器運行時顯示那麼多數字。 2)計時器不準確。不能保證在你要求的時間間隔內被調用,特別是在小於'0.001'的值時。您應該在啓動計時器時讀取時鐘讀數,然後在每個*滴答*處計算差值並更新顯示。 – vacawama

+0

這裏有很好的信息:https://stackoverflow.com/q/31375361/1630618 – vacawama

回答

1

沒有理由更新每個屏幕毫秒。如果你真的需要計時器來發動這麼快,你需要在這裏進行一些優化。首先嚐試更新labelTimer.text(併爲此計算字符串),每40或100毫秒,用戶體驗無差異。

上海:有錯字排在第四行:你需要上千個而不是上百個。

+0

謝謝,但我需要在我的應用程序,毫秒做出每一步。 –