Создать параллакс с помощью SwiftUI - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать эффект параллакса, используя SwiftUI.

Это моя реализация:

import SwiftUI

struct ContentView: View {

    @State var parralaxOffset: CGFloat = 0

    var body: some View {
        ZStack {
            ScrollView {
                Text("Background")
            }.offset(x: 0, y: parralaxOffset)

           ScrollView {
                GeometryReader { reader in
                    Text("Foreground contentOffset: \(reader.frame(in: .global).minY)")
                }
            }
        }
    }
}

Мой вопрос: как установить reader.frame(in: .global).minY) в * 1007? * переменная?

1 Ответ

1 голос
/ 10 октября 2019

В настоящее время существует ошибка (или предполагаемый эффект), когда вы не можете определить или установить переменные внутри GeometryReader. В качестве обходного пути вы можете определить функцию, которая вместо этого обрабатывает операцию, например:

import SwiftUI

struct ContentView: View {

    @State var parralaxOffset: CGFloat = 0

    func handleParralax(_ reader: GeometryProxy) -> some View {
        self.parralaxOffset = reader.frame(in: .global).minY
        return Text("Foreground contentOffset: \(reader.frame(in: .global).minY)")
    }

    var body: some View {
        ZStack {
            ScrollView {
                Text("Background")
            }.offset(x: 0, y: parralaxOffset)

           ScrollView {
                GeometryReader { reader in
                    self.handleParralax(reader)
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...