具有 minimumscaleFactor 的 SwiftUI 文本始终减少文本
Posted
技术标签:
【中文标题】具有 minimumscaleFactor 的 SwiftUI 文本始终减少文本【英文标题】:SwiftUI Text With minimumscaleFactor Always Reducing Text 【发布时间】:2020-08-31 06:08:48 【问题描述】:我遇到了一些用于小部件代码的 SwiftUI 问题。我想创建一个文本组件来缩小文本,但前提是它包含的文本不适合。但是,我看到它一直在缩小文本的比例。有谁知道我做错了什么?
Text(verbatim: entry.records[0].value)
.foregroundColor(.white)
.font(Font.custom("SFCompactDisplay-Thin", size: 48))
.minimumScaleFactor(0.75)
.frame(minWidth: 100, idealWidth: 200, maxWidth: .infinity, minHeight: 48, idealHeight: 48, maxHeight: 48, alignment: .leading)
.padding(.top, 0)
.padding(.bottom, 12)
.padding(.leading, 10)
【问题讨论】:
请更具体一些:哪些文本,在哪个布局,上下文等? 对不起,我应该更清楚。这适用于 ios 14 小部件 【参考方案1】:您的效果是由于给定的.frame
限制。在你不希望文本被缩放然后不要限制它的框架,例如
Text(verbatim: "World")
.foregroundColor(.white)
.font(Font.custom("SFCompactDisplay-Thin", size: 48))
.minimumScaleFactor(0.75)
.frame(maxWidth: .infinity, alignment: .leading) // << here !!
注意:48 大小的字体不等于屏幕上的 48 点。
【讨论】:
【参考方案2】:运行您的代码后,运行看起来是正常的。 (图一、图二)
如果您仍有疑问,请删除 maxWidth: .infinity,
并查看。 (图3)
请告诉我最终结果是什么。 这是我的测试代码。
struct ContentView: View
var body: some View
Text(verbatim: "Hello world Hello world Hello world Hello world Hello world")
.foregroundColor(.black)
.font(Font.custom("SFCompactDisplay-Thin", size: 48))
.minimumScaleFactor(0.5)
.frame(minWidth: 100, idealWidth: 200, minHeight: 48, idealHeight: 48, maxHeight: 48, alignment: .leading)
.padding(.top, 0)
.padding(.bottom, 12)
.padding(.leading, 10)
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
更新 #1
您可以参考此代码以了解对齐问题。使用 HStack 进行布局。
HStack
Text(verbatim: "Hello")
.foregroundColor(.black)
.font(Font.custom("SFCompactDisplay-Thin", size: 48))
.minimumScaleFactor(0.1)
.frame(minWidth: 10, idealWidth: 120, maxWidth: 120, minHeight: 48, idealHeight: 48, maxHeight: 48, alignment: .leading)
.padding(.top, 0)
.padding(.bottom, 12)
.padding(.leading, 10)
Spacer()
【讨论】:
所以我尝试删除 maxwidth: .infinity 并且默认文本大小仍然小于 48。此外,删除 maxwidth 最终导致文本不是 100% 左对齐。 你能提供一些更详细的布局信息吗?或者您可以专注于自己检查ideaWidth
和maxWidth
。以上是关于具有 minimumscaleFactor 的 SwiftUI 文本始终减少文本的主要内容,如果未能解决你的问题,请参考以下文章
UILabel 在设置 minimumScaleFactor 时获取当前比例因子?
SwiftUI:minimumScaleFactor 没有均匀地应用于堆栈元素
UILabel minimumScaleFactor 是如何工作的?