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:根据字符串长度动态更改字体大小的主要内容,如果未能解决你的问题,请参考以下文章