【问题标题】:SwiftUI: Horizontal scrollview I am able to pull image up and downSwiftUI:水平滚动视图我能够上下拉图像
【发布时间】:2019-12-30 14:16:47
【问题描述】:

我正在 swiftui 中创建我的水平滚动视图,但是当我尝试使用它时,我能够上下拉动滚动视图中的子视图,当它第一次加载时,顶部、中间和底部也有空白,就好像edgesignore(.all) 不起作用。请参阅下面的代码和图像。我将如何摆脱这个空白,并且不允许拉起顶部的蓝色视图?

var body: some View {
    GeometryReader { geometry in
        ZStack{

            VStack {

                ZStack{

                    ScrollView (.horizontal, showsIndicators: true) {
                        HStack(spacing: 0){
                            Group{
                                Color(.blue)
                                Color(.red)
                                Color(.green)
                            }.frame(width: geometry.size.width, height: geometry.size.height * 0.52)

                        }

                    }//end of scroll\view
                        .frame(width: geometry.size.width, height: geometry.size.height * 0.52)


                } .frame(width: geometry.size.width, height: geometry.size.height * 0.52)
                    .edgesIgnoringSafeArea(.all)

                ZStack{
                    Color(.orange)

                }//end of second ZStack

                    .frame(width: geometry.size.width, height: geometry.size.height * 0.48)
            }
        }.edgesIgnoringSafeArea(.all)

    }
}

【问题讨论】:

  • 您的代码没有运行您提供的图像。更新或解释更多

标签: view scrollview swiftui


【解决方案1】:

您必须根据以下注意事项重构您的代码:

  • 只需将 VStack Spacing 设置为 0,视图将不再在其垂直轴上滚动。您可以通过将两个框架高度增加到 100% 以上来检查这一点,它会再次开始滚动

  • 重构ZStacks,根据上下Stack设置EdgeIgnoringSafeArea。请记住,在 SwiftUI 中,检查 ViewModifiers 的正确顺序很重要。

    var body: 一些视图 {

    GeometryReader { 中的几何体

    VStack(spacing:0) {
        ZStack {
            Color(.orange)
            .edgesIgnoringSafeArea(.top)
    
            ScrollView (.horizontal, showsIndicators: true) {
                HStack(spacing:0){
                    Group{
                        Color(.blue)
                        Color(.red)
                        Color(.green)
                    }
                    .frame(width: geometry.size.width, height: geometry.size.height * 0.52)
                }
            }
        }
        ZStack{
            Color(.orange)
                .edgesIgnoringSafeArea(.bottom)
                .frame(width: geometry.size.width, height: geometry.size.height * 0.48)
    
        }
    }
    

    }

}

它适用于 XCode 11.3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    相关资源
    最近更新 更多