2

vStack を使用した私のスクロールビューは、GeometryReader がなくても機能しました (AppleTV では - iOS ではテストしませんでした)。

次に、geometryreader を追加すると、VStack は ZStack のように「崩壊」します。

これを解決するにはどうすればよいですか? (そして、はい、geometryreader が必要です ;))

struct ContentView: View {

    @State var offset : CGFloat = 0

    var body: some View {
        ScrollView(.vertical, showsIndicators: false) {
            VStack(alignment: .leading) {
                GeometryReader { geometry -> AnyView in
                    let newOffset = geometry.frame(in: .global).minY
                    if newOffset != self.offset {
                        self.offset = newOffset
                        print("new offset",newOffset)
                    }
                    return AnyView (
                        ForEach (0..<5) { _ in
                            Text("umpf")
                        }
                    )
                }
            }
        }
    }
}

結果:

ここに画像の説明を入力

このコードは希望どおりに機能します。

struct ContentView: View {

    @State var offset : CGFloat = 0

    var body: some View {
        ScrollView(.vertical, showsIndicators: false) {
            VStack(alignment: .leading) {
//                GeometryReader { geometry -> AnyView in
//                    let newOffset = geometry.frame(in: .global).minY
//                    if newOffset != self.offset {
//                        self.offset = newOffset
//                        print("new offset",newOffset)
//                    }
//                    return AnyView (
                        ForEach (0..<5) { _ in
                            Text("umpf")
                        }
            //        )
        //        }
            }
        }
    }
}

結果: ここに画像の説明を入力

4

1 に答える 1