更改 SwiftUI 文本 .timer 格式
Posted
技术标签:
【中文标题】更改 SwiftUI 文本 .timer 格式【英文标题】:Change SwiftUI Text .timer format 【发布时间】:2020-10-29 20:35:20 【问题描述】:我正在尝试使用 SwiftUI 创建一个小部件,并且我想使用 Text 中的“.timer”样式
但Text(entry.date, style: .timer)
的结果
类似于15:34:23
但我想要小时和分钟部分分开。
我怎样才能做到这一点?
我试图获取文本的字符串值并在一个方法中对其进行格式化,但似乎没有办法像我们在 Swift 中那样获取文本字符串,例如 someLabel.text
我也找到了与我相似的this question,但我在那里找不到任何答案
我也不想使用this solution,因为加载小部件需要更长的时间。
提前致谢。
【问题讨论】:
这能回答你的问题吗? Updating time text label each minute in WidgetKit 实际上,我不想使用该解决方案,因为以这种方式加载小部件需要更长的时间。它适用于简单的小部件,但我的小部件有点复杂,使用此解决方案可能需要几分钟才能加载,但使用 .timer 方法,它是即时的,因为无需提前添加 60 * 24 个整体 您无法更改.timer
格式,因此您可能需要提前创建条目。
有什么方法可以像 someLabel.text 一样在 Swift 中获取 Text 字符串?
没有。这里的问题是 Widget 视图是静态的。您无法从视图本身内部刷新它们。您需要重新加载时间线。如果您不想一整天都创建条目(正如您所说的那样很慢),您可以只创建一个小时然后重新加载。
【参考方案1】:
Text(Calendar.current.startOfDay(for: Date()), style: .timer)
但是0点钟不显示小时,10点之前只显示一位数的小时。
【讨论】:
但我只是想抓住它的一小部分 我的问题是如何更改格式,但它仍然显示 hh:mm:ss 的原始格式 我的代码是显示当前时间和0点之间的小时:分钟:秒。例如,如果当前时间是早上 10:20,那么距离 0 的距离是 10 小时 20 分钟。格式为默认HH:mm:ss,不能修改。以上是关于更改 SwiftUI 文本 .timer 格式的主要内容,如果未能解决你的问题,请参考以下文章