SwiftUI:根据字符串长度动态更改字体大小

Posted

技术标签:

【中文标题】SwiftUI:根据字符串长度动态更改字体大小【英文标题】:SwiftUI: Dynamically change font size based on a string length 【发布时间】:2020-04-20 22:55:08 【问题描述】:

在 SwiftUI 中有什么东西可以让我测量字符串长度 - 例如在文本字段内 - 并减小其字体大小,以防字符串长于文本字段的宽度?

好的,我明白了,我的问题模棱两可......有两个问题合并为一个:D 让我把它们分开,然后进入我真正感兴趣的点。

动态更改 TextFields 字体应该没什么大不了的。我还没有测试它,但我想在 .font() 修饰符中持有 @State variable 并将其传递给 .systemfont() 应该可以解决问题。

现在我真正感兴趣的是:如何知道我的文本字段文本是否比其容器长?

搜索互联网让我发现了 UIKit 的 intrinsicContentSize。但是我没有找到任何对 SwiftUI 有用的等价物,也没有发现是否可以在 SwiftUI 中使用它。

有没有人在 SwiftUI 中做过类似的事情?谁能指出我正确的方向?

谢谢

【问题讨论】:

【参考方案1】:

有一个简单的答案,但是,我发现它只是有时有效。

Text("Hello World!")
.minimumScaleFactor(0.4)

这应该做你想要的,如果它不适合只缩小文本。它只会将文本缩小到适合文本框架所需的数量。

虽然我发现在某些设备上,swiftUI 无论如何都会将文本缩小到最小因子。这似乎取决于应用程序。在我的一些应用程序中,它只能在模拟器中运行,而在其他应用程序中,它可以在任何设备上正常运行。

希望这会有所帮助。

【讨论】:

哇哦!这样可行。是否有可能分多个步骤调整规模?例如,第一个 scaleFact 设置为 0.7,第二个设置为 0.4? 没有。我更新了我的答案以阐明字体是如何缩放的。

以上是关于SwiftUI:根据字符串长度动态更改字体大小的主要内容,如果未能解决你的问题,请参考以下文章

动态字体大小缩放

如何根据字符串长度和标签大小调整标签的字体大小

在 Swiftui 的 Text() 中自动调整字体大小?

有没有办法让标签的字体大小动态调整到 PyQt5 中标签中的文本?

如何在swiftui中使用选择器更改文本大小

根据步进值动态改变字体大小