SwiftUI 有没有办法检测用户是否启用了较大的文本大小?

Gar*_*abo 10 swift swiftui

我已阅读所有有关支持动态文本大小的文章,但我的问题是我有一个由形状和一些文本组成的视图。我需要对此视图的高度进行硬编码,因此当用户使用较大的文本大小时,文本会与形状重叠。我想做的是检测何时使用较大的文本大小并增加视图的硬编码高度。

Ada*_*dam 17

这是有环境价值的:

\n
@Environment(\\.sizeCategory) var sizeCategory\n
Run Code Online (Sandbox Code Playgroud)\n

有了它,你可以做这样的事情:

\n
if sizeCategory > ContentSizeCategory.large {\n    // views for large text\n} else {\n    // views for regular/small text\n}\n
Run Code Online (Sandbox Code Playgroud)\n

您还应该查看@ScaledMetric属性包装器,它将根据 user\xe2\x80\x99s 文本大小自动缩放您的 var:

\n
@ScaledMetric var height: CGFloat = 100\n
Run Code Online (Sandbox Code Playgroud)\n

这是两者的一个很好的总结:https://swiftwithmajid.com/2019/10/09/dynamic-type-in ​​-swiftui/

\n

  • 从 iOS 16+ 开始,请使用“dynamicTypeSize”代替 https://developer.apple.com/documentation/swiftui/environmentvalues/sizecategory (2认同)