В настоящее время имеет таймер, который отсчитывает оставшееся время, пока время не изменится на каждую минуту. Получил отсчет, работающий, но задается вопросом, как получить отсчет, который отображается, чтобы прикрепить переменную @state. Но, честно говоря, так как это виджет, я чувствую, что это может быть невозможно. Код ниже < /p>
struct DigitalClockView: View {
let entry: DigitalClockEntry
let components: DateComponents
let futureDate: Date
var currentTime: String {
let time = entry.date
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "H:mm"
return timeFormatter.string(from: time)
}
@State var countDown: String = ""
init(entry: DigitalClockEntry) {
self.entry = entry
let difference = 60 - Calendar.current.component(.second, from: entry.date)
self.components = DateComponents(second: difference)
self.futureDate = Calendar.current.date(byAdding: components, to: entry.date)!
}
var body: some View {
VStack(alignment: .center) {
Text(futureDate, style: .timer)
Text(currentTime)
}
}
}
extension Date {
func adding(
_ component: Calendar.Component,
value: Int,
in calendar: Calendar = .current
) -> Self {
calendar.date(byAdding: component, value: value, to: self)!
}
}
//// Provider
struct DigitalClockProvider: TimelineProvider {
private let placeholderEntry = DigitalClockEntry(
date: Date(),
futureDate: Date()
)
func placeholder(in context: Context) -> DigitalClockEntry{
placeholderEntry
}
func getSnapshot(in context: Context, completion: @escaping (DigitalClockEntry) -> ()) {
completion(DigitalClockEntry(date: Date(), futureDate: Date()))
}
func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) {
let currentDate = Date()
let entryDate = Calendar.current.date(byAdding: .second, value: 60, to: currentDate)!
let entries = [ DigitalClockEntry(date: currentDate, futureDate: entryDate) ]
let timeline = Timeline(entries: entries, policy: .after(currentDate))
completion(timeline)
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-variable
Swift: Получение таймера виджетов для появления переменной состояния ⇐ IOS
Программируем под IOS
1757954512
Anonymous
В настоящее время имеет таймер, который отсчитывает оставшееся время, пока время не изменится на каждую минуту. Получил отсчет, работающий, но задается вопросом, как получить отсчет, который отображается, чтобы прикрепить переменную @state. Но, честно говоря, так как это виджет, я чувствую, что это может быть невозможно. Код ниже < /p>
struct DigitalClockView: View {
let entry: DigitalClockEntry
let components: DateComponents
let futureDate: Date
var currentTime: String {
let time = entry.date
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "H:mm"
return timeFormatter.string(from: time)
}
@State var countDown: String = ""
init(entry: DigitalClockEntry) {
self.entry = entry
let difference = 60 - Calendar.current.component(.second, from: entry.date)
self.components = DateComponents(second: difference)
self.futureDate = Calendar.current.date(byAdding: components, to: entry.date)!
}
var body: some View {
VStack(alignment: .center) {
Text(futureDate, style: .timer)
Text(currentTime)
}
}
}
extension Date {
func adding(
_ component: Calendar.Component,
value: Int,
in calendar: Calendar = .current
) -> Self {
calendar.date(byAdding: component, value: value, to: self)!
}
}
//// Provider
struct DigitalClockProvider: TimelineProvider {
private let placeholderEntry = DigitalClockEntry(
date: Date(),
futureDate: Date()
)
func placeholder(in context: Context) -> DigitalClockEntry{
placeholderEntry
}
func getSnapshot(in context: Context, completion: @escaping (DigitalClockEntry) -> ()) {
completion(DigitalClockEntry(date: Date(), futureDate: Date()))
}
func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) {
let currentDate = Date()
let entryDate = Calendar.current.date(byAdding: .second, value: 60, to: currentDate)!
let entries = [ DigitalClockEntry(date: currentDate, futureDate: entryDate) ]
let timeline = Timeline(entries: entries, policy: .after(currentDate))
completion(timeline)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79366492/swift-getting-widget-timer-to-show-up-on-a-state-variable[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия