在SwiftUI中避免文本抖动

时间:2019-09-13 12:18:26

标签: macos swiftui beta

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

Text(format: "%02d:%02d", hours, minutes)
    .frame(width: 100, alignment: .trailing)

jiggling

(框架大于字符串)

注意:

  • 问题是“ 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)
}

1 个答案:

答案 0 :(得分:0)

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

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

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