为什么VStack在带有scrollview的GeometryReader中不起作用?

克里斯

我的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")
                        }
            //        )
        //        }
            }
        }
    }
}

结果: 在此处输入图片说明

他的脾气

让我假设您最初想要这个(它不会破坏ScrollView的布局和滚动)

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将带有通配符(*)的文件复制到bash脚本中的文件夹中-为什么不起作用?

带有滚动指示的ScrollView中的SwiftUI TapGesture和LongPressGesture不起作用

iOS 7缩放在带有AutoLayout的ScrollView中不起作用,但在iOS8 / 9中起作用

为什么带有toList()的debounce()在RxAndroid中不起作用?

从列中删除带有冒号的单词-为什么不起作用?

为什么带有push的git别名不起作用?

在SQL中。为什么带有通配符的“赞”语句不起作用?

带有AutoLayout的ScrollView不起作用

Makefile:为什么带有%的makefile不起作用?

为什么static_assert在带有const参数的成员函数中不起作用?

为什么Angular 8路由器在带有WkWebView的Cordova IOS中不起作用?

与find一起使用时,为什么带有后缀的basename在子shell中不起作用?

为什么带有粘性div的网格不起作用?

为什么我的反跳功能在带有钩子的React应用程序中不起作用?

带有imagemap的HTML5图像旋转在IE 8中不起作用。为什么?

为什么带有jmp指令的shellcode起作用,为什么标签在C包装器中不起作用?

为什么.save在Mongoose中起作用但在带有upsert的.update中不起作用

为什么除非在数组中,否则带有类的“ as”关键字不起作用?

为什么带有涉及计算的参数的查询在SSRS中不起作用?

为什么带有不同参数的多个`this()`在父构造函数中不起作用?

为什么带有头文件的makefile不起作用?

为什么“cat >> file”在带有粘贴文本的 zsh 中不起作用?

为什么回调在带有 mysql 的 nodejs 中不起作用?

带有 ScrollView 的 KeyboardAvoidingView 在 react-native 或 expo 中不起作用

Kivy:为什么 ScrollView 在 GridLayout 中不起作用?

为什么我的水平 ScrollView 不起作用?

为什么带有字符语句的 ifelse 不起作用?

为什么 mysqldump 到文件中在 docker 容器中不起作用(带有不直观的错误消息)?

为什么我的 Kivy ScrollView 滚动不起作用?