【发布时间】:2020-01-15 07:43:57
【问题描述】:
有什么办法可以避免下面的晃动吗?代码是这样的:
Text(format: "%02d:%02d", hours, minutes)
.frame(width: 100, alignment: .trailing)
(框架比字符串大)
注意事项:
- 问题是“1”比“0”细,所以当我点击
01:11之类的组合时,字符串的总长度小于(比如说)00:00,并且文本被替换。李> - 固定框架宽度对抖动没有影响。
- 对齐
.trailing或.center不要修复抖动。 - 我很好奇时不时出现的
...。我可以通过在String的末尾添加一个空格来修复它,就像这样"%02d:%02d "
滑块代码(用于补全):
Slider(value: $totalTime, in: 0...9).frame(width: 150)
Slider 值到 hh:mm 的转换:
func formatTime(_ time: Float) -> String {
let hours: Int = Int(time)
let minutes: Int = Int(time.truncatingRemainder(dividingBy: 1.0) * 60)
return String(format: "%02d:%02d", hours, minutes)
}
【问题讨论】:
-
为什么不直接设置一个固定的
minWidth? -
欢迎来到 StackOverflow。你能发布一个更完整的代码sn-p吗?理想情况下,它应该是
View中的所有内容 -
我可以在 iTunes 等应用程序中看到同样的问题。不同之处在于它们的字体非常小,因此可能并不重要。在我的例子中,文本的字体更大,所以抖动非常明显
-
嗨 ???? @LinusGeffarth ...是的,我尝试了 minWidth 和 width,但没有成功
-
你总是可以使用等宽字体:P