上一節中我們了解了ios小組件的重新整理機制,發現根本沒法實現按秒重新整理,但是看別的app裡面有做到,以為用了什麼黑科技,原來是因為系統提供了乙個額外的機制實現時間的動態更新,不用走小組件的重新整理機制。
text控制項支援顯示日期時間,下面是來自官網的**
let components = datecomponents(minute: 11, second: 14)
let futuredate = calendar.current.date(byadding: components, to: date())!
text(futuredate, style: .relative)
// displays:
// 11 min, 14 sec
text(futuredate, style: .offset)
// displays:
// -11 minutes
使用rela樣式可以顯示當前日期和時間與指定日期之間的差值(絕對值),而不管該日期是將來的還是過去的日期。使用offset樣式顯示當前日期和時間與指定日期之間的時差,表示將來的日期帶有減號(-)字首,而過去的日期帶有加號(+)字首。
let components = datecomponents(minute: 15)
let futuredate = calendar.current.date(byadding: components, to: date())!
text(futuredate, style: .timer)
// displays:
// 15:00
對於將來的日期,timer樣式將遞減計數(倒計時),直到當前時間達到指定的日期和時間為止,並在日期經過時遞增計數(計時器)。
// absolute date or time
let components = datecomponents(year: 2020, month: 4, day: 1, hour: 9, minute: 41)
let aprilfirstdate = calendar.current(components)!
text(aprilfirstdate, style: .date)
text("date: \(aprilfirstdate, style: .date)")
text("time: \(aprilfirstdate, style: .time)")
// displays:
// april 1, 2020
// date: april 1, 2020
// time: 9:41am
let startcomponents = datecomponents(hour: 9, minute: 30)
let startdate = calendar.current.date(from: startcomponents)!
let endcomponents = datecomponents(hour: 14, minute: 45)
let enddate = calendar.current.date(from: endcomponents)!
text(startdate ... enddate)
text("the meeting will take place: \(startdate ... enddate)")
// displays:
// 9:30am-2:45pm
// the meeting will take place: 9:30am-2:45pm
使用 style: .time樣式,如果當前的時間比指定的時間大,則時間就會累計。基於這個原理,我們只需要把時間起點定在每天的0點即可,根據當前的時間計算出今天的開始時間。以下方法可以根據12,24小時制度,獲取當天起點時間。
//獲取當天開始的日期,給date增加乙個拓展方法
extension date
}// 實現一天程式設計客棧內的計時器
text(date().getcurrentdaystart(true), style: .timer)
程式設計客棧通過ios text控制項我們實現了按秒重新整理的計時器,所以數字時鐘的按秒重新整理算是解決了,但是怎麼實現表盤時鐘的秒針360度旋轉呢?如果讓秒針精確的對應當前的時間,應該做不到了。後面再繼續研究,如果有解決方案的可以貢獻一下,感謝。
本文標題: ios小組件實現時鐘按秒重新整理功能
本文位址: /ruanjian/ios/395055.html
HTML JS實現時鐘
效果 知識點 canvas 物件及其屬性。settimeout 方法,用於在指定的毫秒數後呼叫函式或計算表示式。date 物件 時分秒對應弧度制的計算 var pi math.pi var dat new date var hours dat.gethours 獲取小時 var minuntes d...
Vue實現時鐘
採用定時器來獲取最新的時間,通過date的方法獲取年份 月份 日期 星期以及當前時間,用來拼裝時鐘,然後使用生命週期函式create來建立定時器,是時鐘每隔一秒鐘發生一次變化,達到時鐘在走的效果,同時在beforedestroy函式中清除定時器 totimestring 方法可把 date 物件的時...
applet實現時鐘程式
實現思路 利用awt中的繪圖程式實現,結合多執行緒動態更新時間 如下 參考jdk中clock public void init 重新繪鐘錶圖 override public void update graphics g if xm lastxm ym lastym if xh lastxh yh l...