作為一個剛接觸Swift的新手,仿刻IOS內建的鬧鐘似乎是個不錯的開始,而鬧鐘裡面又分成四種功能:鬧鐘,世界時鐘,計時器以及碼表。
其中,個人認為難易度最低的應該是碼表,那麼今天我們就從碼表開始練習吧,首先就是將需要用到的UI加入畫面,同時拉好UI的layout,不然跑版了就不好看了,拉好之後大概像這樣,上面一個Label,中間兩個Button,最下面是TableView。
拉完UI後,我們就可以開始製作功能了,首先是負責控制的兩個Button,兩個Button在不同的情況下會有不同的功能。
這裡我是用兩個變數來代表兩個Button的狀態,搭配if來切換功能,同時另一個Button的狀態也會跟著切換。
然後是Timer的設定,這裡設每0.01秒執行一次Timer裡的函式。
@IBOutlet weak var stopWatchLabel: UILabel!
@IBOutlet weak var startLapButton: UIButton!
@IBOutlet weak var lapButton: UIButton!
@IBOutlet weak var lapTableView: UITableView!
var startStauts = true
var lapStauts = false
var milliSeconds = 0
var timer = Timer()
var stopWatchs = [String]()
@IBAction func startOrStop(_ sender: Any) {
if startStauts {
startStauts = false
lapStauts = true
startLapButton.setTitle("Pause", for: .normal)
startLapButton.setTitleColor(.red, for: .normal)
lapButton.setTitle("Lap", for: .normal)
lapButton.setTitleColor(.black, for: .normal)
lapButton.isEnabled = true
timer = Timer.scheduledTimer(timeInterval: TimeInterval(0.01), target: self, selector: #selector(countDown), userInfo: nil, repeats: true)
}else{
startStauts = true
lapStauts = false
startLapButton.setTitle("Start", for: .normal)
startLapButton.setTitleColor(.green, for: .normal)
lapButton.setTitle("Reset", for: .normal)
lapButton.setTitleColor(.black, for: .normal)
timer.invalidate()
}
}
這裡是計算時間,計算的方式是每毫秒+1,同時將時間進行分別處理成時分秒還有毫秒之後顯示出來。
var calcuMilSec = 0
var calcuSec = 0
var calcuMin = 0
var calcuHor = 0
@objc func countDown(){
milliSeconds += 1
calcuMilSec = milliSeconds % 100
calcuSec = (milliSeconds / 100) % 60
calcuMin = (milliSeconds / 6000) % 60
calcuHor = (milliSeconds / 360000) % 24
stopWatchLabel.text = String(format: "%02d:%02d:%02d.%02d", arguments: [calcuHor, calcuMin, calcuSec, calcuMilSec])
}
到這裡就是今天的進度了,明天再來完成另一個Button的功能以及一些問題的處理。