【问题标题】:SwiftUi scaling text differently on deviceSwiftUi 在设备上以不同方式缩放文本
【发布时间】:2020-06-17 00:58:30
【问题描述】:

我正在使用以下代码使用 SwiftUI 在屏幕上显示大量数字:

return GeometryReader() { geometry in
            Text(series.split(separator: ",")[self.calculator.pointsIndex])
                .font(Font.system(size: round(geometry.size.height * 1.5),
                                  weight: .light,
                                  design: .rounded))
                .minimumScaleFactor(0.2)
                .scaledToFit()
                .allowsTightening(true)
                .background(Color.red.opacity(0.25))
        }

在模拟器上是这样的:

在设备上看起来像这样:

我一直在绞尽脑汁想弄清楚为什么设备上的数字要小得多。有什么想法吗?

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    这个round(geometry.size.height * UIScreen.main.scale * 1.2 在设备(和不同的设备)和模拟器上给出不同的结果。

    当需要将文本缩放到可用的父空间时,我更喜欢使用以下组合

          Text("any text here")
            .font(.system(size: 1000))
            .minimumScaleFactor(0.01)
            .lineLimit(1)
    

    所以你可以尝试以下修改你的代码

    return GeometryReader { _ in // just to consume all available space
                Text(series.split(separator: ",")[self.calculator.pointsIndex])
                    .font(.system(size: 1000, weight: .light, design: .rounded))
                    .minimumScaleFactor(0.01)
                    .lineLimit(1)
                    .background(Color.red.opacity(0.25))
            }
    

    【讨论】:

    • 哦,对不起。该行最初是.font(Font.system(size: round(geometry.size.height * 1.5), weight: .light, design: .rounded))UIScreen 位是我试图弄清楚发生了什么:-) 我会更正我的代码。
    猜你喜欢
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多