ios - 在 Swift/SwiftUI 中仅显示 Date 对象的时间
问题描述
我一直在使用结束时间显示音频持续时间。一位优秀的 Stack Overflow 开发人员提出了这个解决方案。
因此,我在我的观点中添加了这个:
struct ContentView: View {
@ObservedObject var viewModel = MyViewModel() //<- here
var body: some View {
VStack {
Text(viewModel.endTime) //<- here
}
}
}
这是我的代码viewModel
:
class MyViewModel: ObservableObject {
@Published var endDate: Date?
var endTime: String{
endDate == nil ? "":endDate!.description
}
func play(){
let path = Bundle.main.path(forResource: "song", ofType:"mp3")!
let url = URL(fileURLWithPath: path)
do {
player = try AVAudioPlayer(contentsOf: url)
endDate = Date() + player.duration
if player.isPlaying{
player.pause()
}
else{
player.play()
}
isPlaying = player.isPlaying
}catch{print("error")}
但我得到了错误的时间(不是系统时间),但日期正确。我只想显示不带日期的正确时间。
解决方案
从 iOS 14+ 开始,Text有一个名为 style 的属性,用于显示日期。
文本日期样式
用于显示日期的预定义样式。
init(Date, style: Text.DateStyle)
创建一个使用特定样式显示本地化日期和时间的实例。https://developer.apple.com
您不需要使用DateFormatter
. 使用Text()
with time
as 样式可能就足够了。
Text(Date(), style: .time)
在你的情况下:
Text(viewModel.endTime, style: .time)
推荐阅读
- c - 如何使我的代码符合 MISRA 2012 RULE10.4
- android - Flutter 构建失败,出现未知属性“runtimeConfiguration”错误
- reactjs - 如何使用 ASP.Net Core 3.0 为开发环境设置 React 端口?
- google-apps-script - 如何根据表单字段选择动态启用/禁用按钮?
- python - 上传时尝试将 .mov 文件更改为 .mp4 - python/django
- excel - 将整个表数据复制到另一个表
- c# - C# Mongo 驱动程序:使用联接和 UpdateManyAsync 更新查询
- sql - 多个 IF ELSE 语句的 Dax 查询
- c# - 在 Asp.net Core 中获取 UserManager 类的对象?
- javascript - VueJS 结合了 v-on 点击功能