如何在swiftui中添加当前日期与歌曲结束时间?



我想添加当前时间(Date())和AVAudioPlayer总时间歌曲时间(play.duration)在一起,以获得在什么时间歌曲结束?

func play(){
let path = Bundle.main.path(forResource: "song", ofType:"mp3")!
let url = URL(fileURLWithPath: path)
do{
player = try AVAudioPlayer(contentsOf: url)

let endDate = Date() + player.duration
if player.isPlaying{

player.pause()

}
else{
player.play()
}
isPlaying = player.isPlaying
}catch{print("error")}
}

这是我的观点

VStack {

Text("I want to display the ending time here")
}

我们可以将双精度体TimeInterval加到Date

TimeInterval的值总是以秒为单位指定;它的收益率在10000年的范围内,精确到毫秒以下。

Date() + 60 //<- 1 Second 
let endDate = Date() + avPlayer.duration
struct ContentView: View {
@ObservedObject var viewModel = MyViewModel() //<- here

var body: some View {
VStack {

Text(viewModel.endTime) //<- here

}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

在你的ViewModel

class MyViewModel: ObservableObject {
@Published var endDate: Date? //<- here

var endTime: String{
if endDate == nil {
return ""
}else {
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm"
return dateFormatter.string(from: endDate)
}
}
func play(){
let path = Bundle.main.path(forResource: "song", ofType:"mp3")!
let url = URL(fileURLWithPath: path)
do{
player = try AVAudioPlayer(contentsOf: url) //<-here

endDate = Date() + player.duration
if player.isPlaying{

player.pause()

}
else{
player.play()
}
isPlaying = player.isPlaying
}catch{print("error")}
}
}

相关内容

最新更新