50天iOS挑戰(zhàn)(Swift) - 第1天:秒表計時器

50天iOS挑戰(zhàn)(Swift) - 第1天:秒表計時器

50天,每天一個Swift語言的iOS練手項目,覆蓋iOS開發(fā)的主要知識。貴在堅持,重在思考


文章列表:http://www.itdecent.cn/nb/13566182
Github項目:https://github.com/Minecodecraft/50DaysOfSwift


簡介

本項目為仿照系統(tǒng)樣式的計時器
主要知識點: Timer、Storyboard、StatuBar

Showcase

過程

1、 思路整理
該項目是簡單的Timer使用,為了增加難度,特意只設(shè)置兩個按鈕,分別負責(記錄、復(fù)位)和(開始、停止、繼續(xù)) 多個操作,鍛煉邏輯思維能力。
主要思想就是:對于左按鈕,在未開始時復(fù)位按鈕為不可用狀態(tài),開始時為記錄按鈕,暫停時為復(fù)位狀態(tài),而若繼續(xù)計時,則恢復(fù)記錄狀態(tài)。對于右按鈕,在左按鈕復(fù)位時變?yōu)殚_始狀態(tài),并清空記錄的數(shù)據(jù),否則為繼續(xù)狀態(tài)。上方顯示時間的label也隨此邏輯變化。

2、 Timer的使用
Timer的使用與NSTimer一樣,使用self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true) 創(chuàng)建每毫秒執(zhí)行一次的Timer即可,停止時self.timer.invalidate() 即可。
注意:在之前使用Timer時遇到了沒有開啟計時器的問題,查閱了很久,發(fā)現(xiàn)忘記使用scheduledTimer() 函數(shù),在創(chuàng)建時要注意這點。

3、 Storyboard使用
Storyboard來輔助界面設(shè)計是很方便的了。設(shè)置好控件之后,直接拖入代碼中創(chuàng)建IBOutlet、IBAction即可。
在這里順便說一下初學(xué)時遇到的空指針問題,如果只在代碼中刪除了IBOutlet或者IBAction,沒有在Storyboard的控件中刪除,將會在程序啟動時crash,如果遇到在Appdelegate出Thread的情況,可以檢查一下是否是此問題。曾經(jīng)因為這個問題調(diào)了一晚上,于是對空指針記憶猶新(Java選手:emmmmmmm…)

4、 狀態(tài)欄的設(shè)置
由于使用了深色背景,會導(dǎo)致深色狀態(tài)欄被底色覆蓋。在此修改一下狀態(tài)欄主題。
iOS的狀態(tài)欄提供了深色和淺色主題。需要現(xiàn)在plist中設(shè)置屬性然后在代碼中修改。
步驟1:在plist.Info中添加View controller-based status bar appearance 屬性為NO

plist

步驟2:在代碼中設(shè)置
UIApplication.shared.statusBarStyle = .lightContent

具體請查看項目源代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容