IOSモジュールがクロックを秒で更新する機能を実現しました。


ことばを引く
前のセクションでは、IOSの小部品のリフレッシュメカニズムを理解しましたが、秒ごとに更新することはできませんでした。しかし、他のアプリを見ても、どのような黒科学技術が使われているかというと、システムは時間的な動的アップデートを実現するための追加のメカニズムを提供しています。
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
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓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
2つの日付の間の時間間隔を表示します。

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
一日の時間を実現するタイマー
スタイルを使うと、現在の時間が指定された時間より大きいと、時間が累計されます。この原理に基づいて、私達は時間の起点を毎日の0時に決めてもいいです。今の時間から今日の開始時間を計算します。下記の方法は12、24時間制により、当日の起点時間を取得することができます。

//         , Date        
 extension Date {
    func getCurrentDayStart(_ isDayOf24Hours: Bool)-> Date {
        let calendar:Calendar = Calendar.current;
        let year = calendar.component(.year, from: self);
        let month = calendar.component(.month, from: self);
        let day = calendar.component(.day, from: self);
    
        let components = DateComponents(year: year, month: month, day: day, hour: 0, minute: 0, second: 0)
        return Calendar.current.date(from: components)!
    }
}
//          
Text(Date().getCurrentDayStart(true), style: .timer)

おわりに
   はIOS Textコントロールを通じて秒ごとに更新するタイマーを実現しました。だから、デジタルクロックの秒ごとに更新するのは解決しましたが、時計盤の秒針360度の回転はどうやって実現しますか?秒针を正确に対応させると、今の时间は无理です。後でまた研究を続けます。解決策があれば貢献してください。ありがとうございます。