Вот упрощенная версия представления, которое я использую в интерактивной активности для экрана блокировки:
Код: Выделить всё
VStack {
VStack {
Text("The event will happen in")
Text(timerInterval: Date.now...context.state.event.date, countsDown: true)
}
.foregroundStyle(!context.isStale ? .primary : .secondary)
if context.isStale {
Text("The event is over!")
.foregroundStyle(Color.red)
}
}
Если я заменю Text(timerInterval: ClosedRange, PauseTime: Date?, countsDown: Bool, ShowHours: Bool) в виджете на Text(_ date: Date, style: Text.DateStyle), сбой не произойдет, и пользовательский интерфейс виджета обновится правильно когда его ActivityStatus изменится на ActivityState.stale. Однако Text(date, style: .timer) начнет отсчет после того, как дата пройдет, и мне не нужно такое поведение. Я хочу, чтобы обратный отсчет остановился на «0:00», что соответствует поведению Text(timerInterval:pauseTime:countsDown:showsHours:).
Как избежать этого сбоя, сохраняя при этом поведение Text(timerInterval:pauseTime:countsDown:showsHours:)?
Подробнее здесь: https://stackoverflow.com/questions/798 ... status-cha
Мобильная версия