Swiftui 无法从此VStack中删除不需要的空间

Swiftui 无法从此VStack中删除不需要的空间,swiftui,Swiftui,我真的不知道是什么把我的Detail-HStack视图推到了页面底部。我尝试过添加间隔和其他调整,但没有成功。您将在下面找到完整的代码,它可以按原样编译 import SwiftUI struct ContentView: View { var body: some View { GeometryReader { geo in VStack() { VideoPlayerView()

我真的不知道是什么把我的Detail-HStack视图推到了页面底部。我尝试过添加间隔和其他调整,但没有成功。您将在下面找到完整的代码,它可以按原样编译

import SwiftUI

struct ContentView: View {
    var body: some View {
        GeometryReader { geo in
            VStack() {
                VideoPlayerView()
                    .frame(width: geo.size.width, alignment: .center)
                CategoryScrollView()
                Spacer()
            }
            
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


struct CategoryScrollView: View {
    var body: some View {
            HStack {
                            VStack {
                                Text("Category")
                                    .font(.system(size: 30))
                            }
                           Divider()
                            VStack {
                                Text("Chapter")
                                    .font(.system(size: 30))
                            }
                            Divider()
                            VStack {
                                Text("Lesson")
                                    .font(.system(size: 30))
                            }
            }.frame(height: 100)
        
        
    }
}

struct CategoryScrollView_Previews: PreviewProvider {
    static var previews: some View {
        CategoryScrollView()
    }
}



struct VideoPlayerView: View {
    var body: some View {
        GeometryReader { geo in
               
            ZStack(alignment: .center) {
                Rectangle()
                    .frame(height: geo.size.width / 1.4)
                    .cornerRadius(50)
                Image(systemName: "play.fill")
                    .resizable()
                    .foregroundColor(.blue)
                    .frame(width: geo.size.width / 5,height: geo.size.width / 4)
               
            }
        }
    }
}

struct VideoPlayerView_Previews: PreviewProvider {
    static var previews: some View {
        VideoPlayerView()
    }
}
如果不受约束,GeometryReader将占用所有可用空间

您还需要设置VideoPlayerView的高度:

此外,还可以从CategoryScrollView中删除frameheight:100:

如有必要,可以在父视图中使用GeometryReader而不是硬编码值来指定该值。

如果不受约束,GeometryReader将占用所有可用空间

您还需要设置VideoPlayerView的高度:

此外,还可以从CategoryScrollView中删除frameheight:100:


如有必要,您可以在父视图中使用GeometryReader而不是硬编码值指定此帧。

我会将此帧添加到GeometryReader

    GeometryReader { geo in
        VStack() {
            VideoPlayerView()
                .frame(width: geo.size.width, alignment: .center)
            CategoryScrollView()
            Spacer()
        }.frame(maxHeight:geo.size.height/2)
    }

我会将此框架添加到GeometryReader

    GeometryReader { geo in
        VStack() {
            VideoPlayerView()
                .frame(width: geo.size.width, alignment: .center)
            CategoryScrollView()
            Spacer()
        }.frame(maxHeight:geo.size.height/2)
    }
    GeometryReader { geo in
        VStack() {
            VideoPlayerView()
                .frame(width: geo.size.width, alignment: .center)
            CategoryScrollView()
            Spacer()
        }.frame(maxHeight:geo.size.height/2)
    }