Как получить высоту и ширину вида или экрана в SwiftUI - PullRequest
0 голосов
/ 02 февраля 2020

Я использую жест перетаскивания, чтобы изменить оттенок / насыщенность цветового объекта. Идея заключается в том, что вы можете перетаскивать экран и видеть все значения оттенков (0.0 - 1.0), а также сверху вниз с насыщенностью.

Мне требуется размер экрана (или вид, это одно представление приложения), чтобы нормализовать / преобразовать значения CGPoint в диапазон от 0,0 до 1,0, но я все равно не могу найти эту информацию. Есть много потоков, обсуждающих это, но они обычно говорят о том, как установить ширину / высоту просмотра, когда я просто хочу получить его.

У меня есть все функционирует, просто я использую жестко закодированные значения для его нормализации.

1 Ответ

1 голос
/ 02 февраля 2020

Просмотр GeometryReader . Это позволяет вам получить размер текущего вида:

struct ContentView: View {

    var body: some View {
        GeometryReader { geo in
            VStack {
                Text("Hello World!")
                Text("Size:  (\(geo.size.width), \(geo.size.height))")
            }
        }
    }
}

А вот пример, где вы можете перетащить на экран, чтобы изменить значение оттенка:

struct ContentView: View {

    @State private var hue: CGFloat = 0

    var body: some View {
        GeometryReader { geo in
            ZStack {
                Color.white
                    .gesture(DragGesture().onChanged({ value in
                        self.hue = value.location.y / geo.size.height
                    }))

                VStack {
                    Text("Hello World!")
                    Text("Size:  (\(geo.size.width), \(geo.size.height))")
                    Text("Hue:  \(self.hue)")
                }.allowsHitTesting(false)
            }
        }
        .edgesIgnoringSafeArea(.all)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...