如何使用.monospaced系统字体设计

时间:2019-06-15 20:09:50

标签: ios swiftui

我正在尝试使用系统字体并应用等宽设计,但是没有运气。我可以使用自定义字体功能成功地使文本等距,并传入Courier和大小,但这不是个主意,因为字体大小是固定的。

enter image description here

VStack {
    Text("lmlmlmlm 12345678")
    Text("lmlmlmlm 12345678")
    .font(Font.system(.body, design: .monospaced))
    Text("lmlmlmlm 12345678")
    .font(Font.custom("Courier", size: 18))
}

如何使系统字体与.monospaced设计一起使用?我认为这可能是.monospaced的错误,因为.serif选项确实按预期修改了文本。

2 个答案:

答案 0 :(得分:2)

似乎.monospaced字体仅在给定固定大小时适用:

Text("monospaced")
  .font(.system(size: 14, design: .monospaced))

给定诸如body之类的动态文本样式,此方法将无效。但是,正如您还提到的那样,它对于其他字体也可以正常工作,因此这可能是Xcode 11.0 beta中的一个错误,希望在以后的发行版中得到解决。


更新:

此问题已通过 Xcode 11 beta 3 修复。现在,以下代码可以工作:

Text("monospaced")
    .font(.system(.body, design: .monospaced))

答案 1 :(得分:2)

如果您只想使数字等距,则可以尝试使用以下方式:

Text("0123456789")
    .font(Font.system(.body, design: .monospaced).monospacedDigit())

但是,这并没有规避Xcode 11.0 beta的明显错误。字母仍不等距呈现。