IOS小組件實現時鐘按秒重新整理功能

2022-09-26 10:27:23 字數 2196 閱讀 8527

上一節中我們了解了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...