避免 SwiftUI 中的文本抖动

Fac*_*uez 4 beta macos swiftui

有什么想法可以避免下面的抖动吗?代码是这样的:

Text(format: "%02d:%02d", hours, minutes)
    .frame(width: 100, alignment: .trailing)
Run Code Online (Sandbox Code Playgroud)

摇晃

(框架比字符串大)

笔记:

  • 问题是“1”比“0”更薄,所以当我点击一个组合时,比如01:11字符串的总长度小于(假设)00:00并且文本被移位。
  • 固定框架宽度对抖动没有影响。
  • 对齐.trailing.center不修复抖动。
  • ...对不时出现的东西感到好奇。我可以通过的末尾添加一个空白解决它String像这样"%02d:%02d "

滑块代码(用于完成):

Slider(value: $totalTime, in: 0...9).frame(width: 150)
Run Code Online (Sandbox Code Playgroud)

从 Slider 值到 hh:mm 的转换:

Text(format: "%02d:%02d", hours, minutes)
    .frame(width: 100, alignment: .trailing)
Run Code Online (Sandbox Code Playgroud)

Joh*_* M. 8

您可以告诉它使用这样的等宽数字:

Text(String(format: "%02d:%02d", hours, minutes))
    .font(Font.body.monospacedDigit())
    .frame(width: 100, alignment: .trailing)
Run Code Online (Sandbox Code Playgroud)

您可以将“Font.body”替换为您喜欢的字体。

  • 您也可以直接在文本视图上应用“monospacedDigit()” (2认同)