具有计时器样式的 SwiftUI 文本被截断

Posted

技术标签:

【中文标题】具有计时器样式的 SwiftUI 文本被截断【英文标题】:SwiftUI Text with timer style gets truncated 【发布时间】:2020-08-21 13:38:59 【问题描述】:

当使用 Text 和样式 .timer 时,倒计时期间的某些时间会截断时间。设置framefixedSizelayoutPrioritypadding 没有帮助。以下代码:

struct ContentView: View 
    var body: some View 
        Text(Date(), style: .timer)
    

将显示:O:00O:01O:02O:03O:...(被截断)、O:05 等。

有什么解决办法吗?

有类似这样的问题,但他们没有帮助:

Text inside a VStack truncates when it's not supposed to in SwiftUI

SwiftUI Text Behavior

【问题讨论】:

我在自己的项目中遇到过这个问题,没有找到合适的解决方案。即使您这样做Text(date, style: .timer).frame(minWidth: 200).background(Color.green),您也可以看到视图很宽,但随着计时器的计数,文本仍然会被截断。假设这是 Apple 测试版代码中的错误似乎是合理的。我在反馈助手中提交了一个错误,我鼓励你也这样做。 【参考方案1】:

适用于等宽样式。使用 Xcode 12b3 / ios 14 测试。

Text(Date(), style: .timer)
   .font(Font.system(size: 16).monospacedDigit())

【讨论】:

这将在十分钟后失败。 不幸的是,@JamieA 仍然是对的,即使在今天发布的操作系统也是如此 :-(【参考方案2】:

这是 Apple 代码中的一个错误,现已修复。使用 Xcode 12 beta 6 构建/在 iOS 14 beta 6 上运行时,计时器不会截断。

【讨论】:

发行版中仍未修复。必须自己做出字体大小决定。呸呸呸

以上是关于具有计时器样式的 SwiftUI 文本被截断的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 嵌入 ScrollView 后文本被截断

设置为抵抗时,SwiftUI 文本被截断?

SwiftUI:VStack中的VStack,标签被截断

有没有办法在 SwiftUI 中创建 WKExtendedRuntimeSession 的新会话?

如何在 SwiftUI ForEach 内容中将多个按钮操作分开?

SwiftUI - 如何制作启动/停止计时器