ios - swiftui 3 View 栈布局,中间栈占空间

标签 ios swift swiftui

我正在尝试使用 SwiftUI 来构建带有 VStack 的页眉/内容/页脚行的东西。我希望页眉和页脚各占屏幕高度的 10%,内容要扩展以填满其余部分。这种模式对于页眉/内容/页脚以外的东西可能很有用,所以如果已经有实现这种模式的东西(中间 View 扩展,或者类似的东西),那就太好了......

这对于有经验的快速开发者来说可能 super 简单,但我似乎无法在任何地方找到它的例子。

任何建议/指针/代码将不胜感激!

我现有的 super 简单的代码,删除了我所有的实验:


import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack() {
            Header()
            Content()
            Footer()
        }
        .frame(minWidth: 0,
               maxWidth: .infinity,
               minHeight: 0,
               maxHeight: .infinity,
               alignment: Alignment.topLeading)
        .border(Color.red)

    }
}

struct Header: View {
    var body: some View {
        HStack() {
            Text("Header")
        }
        .padding()
        .border(Color.blue)
    }
}

struct Content: View {
    var body: some View {
        HStack() {
            Text("Content")
        }
        .padding()
        .border(Color.black)
    }
}

struct Footer: View {
    var body: some View {
        HStack() {
            Text("Footer")
        }
        .padding()
        .border(Color.green)
    }
}

最佳答案

我想你可以在你的情况下使用 GeometryReader:

struct HeaderContentFooter: View {

    var body: some View {

        GeometryReader { geometry in

            VStack(spacing: 0) {
                Rectangle() // header
                    .foregroundColor(.red)
                    .frame(height: geometry.size.height / 10)

                Rectangle() // content, which fill up everything with VStack

                Rectangle() // footer
                    .foregroundColor(.red)
                    .frame(height: geometry.size.height / 10)
            }

        }
        .edgesIgnoringSafeArea(.all)

    }
}

结果应该是: enter image description here

关于ios - swiftui 3 View 栈布局,中间栈占空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59656091/

相关文章:

ios - 创建目录和调用 setResourceValue 的正确位置在哪里?

ios - 带有重定向 URL 的 UIImageView 不起作用

iphone - 在没有导航 Controller 的情况下将 barButtonItems 添加到 UINavigationBar

ios - 双击 uitextview

ios - for 循环内的 NSURLConnection 异步请求无法正确下载 NSData (Swift)

ios - @Published 属性包装器及其 wrappedValue

ios - subview 有 parent 的影子,即使有背景

ios - 填充一个分段的 UITableView

ios - 状态栏在旋转时隐藏时调整 View

SwiftUI:以某种方式在较小设备上调整 VStack 中的间隔符大小