我试图使用系统字体并应用等宽设计,但没有运气。我可以使用自定义字体功能成功地使文本等距并传入Courier一个大小,但这不是个主意,因为字体大小是固定的。
VStack {
Text("lmlmlmlm 12345678")
Text("lmlmlmlm 12345678")
.font(Font.system(.body, design: .monospaced))
Text("lmlmlmlm 12345678")
.font(Font.custom("Courier", size: 18))
}
Run Code Online (Sandbox Code Playgroud)
如何使系统字体与.monospaced设计配合使用?我认为这可能是一个bug .monospaced,因为该.serif选项确实按预期修改了文本。
如果您只想将数字设为等宽,您可以尝试使用如下内容:
Text("0123456789")
.font(Font.system(.body, design: .monospaced).monospacedDigit())
Run Code Online (Sandbox Code Playgroud)
然而,这并不能规避 Xcode 11.0 beta 的明显错误。字母仍然没有呈现为等宽。
似乎.monospaced字体仅在给定固定大小时适用:
Text("monospaced")
.font(.system(size: 14, design: .monospaced))
Run Code Online (Sandbox Code Playgroud)
给定动态文本样式(例如),此功能将无效body。但是正如您还提到的,它对于其他字体也可以正常工作,因此这可能是Xcode 11.0 beta中的一个错误,希望在以后的发行版中得到修复。
Xcode 11 beta 3已解决此问题。以下代码现在可以工作:
Text("monospaced")
.font(.system(.body, design: .monospaced))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |