SwiftUi по-разному масштабирует текст на устройстве - PullRequest
0 голосов
/ 04 марта 2020

Я использую следующий код для отображения большого числа на экране с помощью 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 голосов
/ 04 марта 2020

Это 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))
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...