Live -Aktivitäten mit Aktualisierungsdatum, Timer und Stoppuhr mit benutzerdefinierten FormatierungIOS

Programmierung für iOS
Anonymous
 Live -Aktivitäten mit Aktualisierungsdatum, Timer und Stoppuhr mit benutzerdefinierten Formatierung

Post by Anonymous »

Ich möchte eine Stoppuhr in meiner Live -Aktivität haben, die von 0 zählt. Es sollte nur ein oder zwei Ziffern und die zugehörige Einheit angezeigt werden, z. "7s", "15m", "2H". < /P>
Ich habe versucht,: < /p>

Code: Select all

Text(startDate, style: .relative)
< /code>
Es gibt auch: < /p>
Text(TimeDataSource.currentDate, format:
.stopwatch(startingAt: startDate, showsHours: true,
maxFieldCount: 1, maxPrecision: .seconds(1)))
jedoch formatieren beide nicht die String wie ich möchte. Wenn möglich, möchte ich die volle Kontrolle über die Formatierung haben. Ich habe versucht, meine eigene benutzerdefinierte Erweiterung zu schreiben: < /p>

Code: Select all

extension FormatStyle where Self == SystemFormatStyle.CustomStopwatchStyle  {
public static func customStopWatch(date: Date) -> SystemFormatStyle.CustomStopwatchStyle {
return SystemFormatStyle.CustomStopwatchStyle(d: date)
}
}

extension SystemFormatStyle {
public struct CustomStopwatchStyle: Sendable, FormatStyle {

public typealias FormatInput = Date
public typealias FormatOutput = String

var d: Date

init(d: Date) {
self.d = d
}

public func format(_ value: Date) -> String {
return formattedDate(date: value)
}
}

Text(TimeDataSource.currentDate, format: .customStopWatch(date: startDate))
Wie dies nicht funktioniert, da TimedataSource . Ich könnte es in TimedataSource ändern: Gibt es eine Möglichkeit, wieder zum Datum zu kommen? Mein gewünschtes Format ist das, was Apple in seinen Entwurfsdokumenten zu fördern scheint. Warum gibt es keine Möglichkeit, dies leicht zu erreichen? Beachten Sie, dass einige Swiftui -Lösungen nicht mit Liveaktivität /acityKit , z. TimelineView oder andere Ansichten , die manuell aktualisieren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post