最近一直沒有更新簡書是因為在開發(fā)和測試階段,有任務,沒有進行學習,不過在做任務的時候也遇到了一些技術點,在這里總結一下。
今天遇到一個需求是倒計時的制作。
首先我們先捋捋思路,肯定是用到NSTimer,這里我的頁面上涉及到scrollview,所以將timer放在了NSRunLoopCommonModes里面了,具體原因請查看RunLoop。

打比方我們設計的是一個30分鐘的倒計時,那么我們涉及到三個時間點:
1、訂單產生的時間--addTime(creatTime)
2、當前時間--currentTime
3、訂單結束的時間--addTime+30分鐘
我們需要做的就是上述2和3的時間進行比較,如果2大,那么說明訂單已經超時了。如果3大,說明訂單還存活。
下邊是代碼,最主要的一步就是紅框里面的。

因為我們的需求是“剩23分44秒自動關閉”里面,漢字是黑色的,數(shù)字是橙紅色的,所以下半部分代碼做的是位置的判斷和顏色的添加。
這里還需要注意的一點是,self.attrString用的不是NSString,而是NSMutableAttributedString,所以在給label賦值的時候選擇是label.attributedText。不然會報黃色警告甚至崩潰。
位置的判斷是將數(shù)字插入在了漢字中間,做位置的判斷和label.attributedText的處理,保證了漢字和數(shù)字之間的距離是隨著數(shù)字的兩位或者一位數(shù)進行frame的調整,避免間距太大,太難看。
我們判斷當分鐘數(shù)和秒數(shù)都為0時或者有一個是負數(shù)時,我們就把定時器停掉,然后去發(fā)送取消訂單的請求。
當然,這里只是介紹了一個定時器的制作,如果在tabelview里面每個cell上邊都有定時器的話,那么我們同樣需要注意創(chuàng)建NSTimer的時候,將timer放在NSRunLoop里面的NSRunLoopCommonModes里。
最后,哪里不對的地方可以給我留言,我會及時改進的,謝謝大家。