SwiftUI:水平滚动视图我能够上下拉图像

Posted

技术标签:

【中文标题】SwiftUI:水平滚动视图我能够上下拉图像【英文标题】:SwiftUI: Horizontal scrollview I am able to pull image up and down 【发布时间】: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)

    

【问题讨论】:

您的代码没有运行您提供的图像。更新或解释更多 【参考方案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。

【讨论】:

以上是关于SwiftUI:水平滚动视图我能够上下拉图像的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI URLImage 水平滚动视图

SwiftUI当总内容宽度小于屏幕宽度时,如何在动态水平滚动视图中居中内容

滚动列表视图垂直和水平相同的图像

SwiftUI - 自动滚动水平滚动视图以显示全文标签

SwiftUi 水平滚动视图,带有来自 Api 的数据

在 SwiftUI ScrollView 中停止垂直滚动