Timer swiftUI中的重复24小时计数器
我试着教自己如何快速开发一款应用程序。我正试图建立一个重复的24小时计时器与符号“24:00:00”。每次计时器过期时,视图中都应该有一些更改,例如文本标签。下面是我已经构建的计时器的一些代码。我希望有人能帮我解决这个问题Timer swiftUI中的重复24小时计数器,timer,Timer,我试着教自己如何快速开发一款应用程序。我正试图建立一个重复的24小时计时器与符号“24:00:00”。每次计时器过期时,视图中都应该有一些更改,例如文本标签。下面是我已经构建的计时器的一些代码。我希望有人能帮我解决这个问题 struct timer: View { @State var nowDate: Date = Date() let referenceDate: Date = Date().addingTimeInterval(20) let calender = Calendar(ide
struct timer: View {
@State var nowDate: Date = Date()
let referenceDate: Date = Date().addingTimeInterval(20)
let calender = Calendar(identifier: .gregorian)
let formatter = DateFormatter()
var timer: Timer {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
self.nowDate = Date()
}
var body: some View {
Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
_ = self.timer
})
}
func countDownString(from date: Date, until nowDate: Date) -> String
{
let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: date)
return String(format: "%02dh:%02dm:%02ds",
components.hour ?? 00,
components.minute ?? 00,
components.second ?? 00)
}
试试这个:
import SwiftUI
struct ContentView: View {
@State var nowDate: Date = Date()
let referenceDate: Date = Date().addingTimeInterval(20)
let calender = Calendar(identifier: .gregorian)
let formatter = DateFormatter()
var timer: Timer {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
self.nowDate = Date()
}
}
func countDownString(from date: Date, until nowDate: Date) -> String
{
let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: date)
return String(format: "%02dh:%02dm:%02ds",
components.hour ?? 00,
components.minute ?? 00,
components.second ?? 00)
}
var body: some View {
Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
_ = self.timer
}) }
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
试试这个:
import SwiftUI
struct ContentView: View {
@State var nowDate: Date = Date()
let referenceDate: Date = Date().addingTimeInterval(20)
let calender = Calendar(identifier: .gregorian)
let formatter = DateFormatter()
var timer: Timer {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
self.nowDate = Date()
}
}
func countDownString(from date: Date, until nowDate: Date) -> String
{
let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: date)
return String(format: "%02dh:%02dm:%02ds",
components.hour ?? 00,
components.minute ?? 00,
components.second ?? 00)
}
var body: some View {
Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
_ = self.timer
}) }
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我希望有人能帮我解决这个问题。如果你能具体说明你的问题是什么(特别是:你期望得到什么以及你从当前代码中得到什么),那就更好了。现在我得到了一个倒计时计时器,它的形式是“24:00:00”。问题是,计时器在“00:00:00”后继续运行,并开始倒计时负数。我想要的是计时器在0停止,并在24小时重复。我的问题是时间是Data.type Date()。因此,我不知道如何用if语句解释,如果倒计时计时器==0,textlabel应该更改。我希望你能理解这个问题。我希望有人能帮我解决我的问题。如果你能具体说明你的问题是什么(特别是:你期望得到什么以及你从当前代码中得到什么),那就更好了。现在我得到了一个倒计时计时器,它的形式是“24:00:00”。问题是,计时器在“00:00:00”后继续运行,并开始倒计时负数。我想要的是计时器在0停止,并在24小时重复。我的问题是时间是Data.type Date()。因此,我不知道如何用if语句解释,如果倒计时计时器==0,textlabel应该更改。我希望您理解这个问题。不幸的是,我看不到此代码与我的代码之间的区别:/不幸的是,我看不到此代码与我的代码之间的区别:/