SwiftUi在设备上以不同方式缩放文本

时间:2020-03-04 13:53:11

标签: swiftui

我正在使用以下代码通过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))
        }

在模拟器上,它看起来像这样:

enter image description here

在设备上看起来像这样:

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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))
        }