SwiftUI布局-VStack中的NavigationView-填充高度

时间:2020-06-03 09:12:24

标签: ios swift iphone ipad swiftui

给出以下视图:

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            SomeView()
            Spacer()

            HStack {
                Text("Some Text1")
                Spacer()
                Text("Some Text2")
                Spacer()
                Text("Some Text2")
            } .background(Color.green)

        } .background(Color.blue)

    }
}

struct SomeView: View {
    var body: some View {
        VStack {
            Text("Hello, World!")
        } 
    }
}

enter image description here

一切正常。绿色的HStack位于屏幕底部,其余屏幕区域由剩余的VStack内容填充为蓝色。

SomeView被NavigationView包裹后,此行为就会更改。绿色的HStack仍位于屏幕底部,但NavigationView并未填充其余所有内容。剩下的是小蓝。如何将其删除以使NavigationView填充内容区域?

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            SomeView()
            Spacer()

            HStack {
                Text("Some Text1")
                Spacer()
                Text("Some Text2")
                Spacer()
                Text("Some Text2")
            } .background(Color.green)

        } .background(Color.blue)

    }
}

struct SomeView: View {
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, World!")
            } .navigationBarTitle(Text("Test"))
        }
    }
}

enter image description here

谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

删除Spacer并将VStack的间距设置为零。这是我的代码。希望对您有帮助。

    struct ContentView: View {
        var body: some View {
            VStack(spacing: 0) {
                SomeView()
                HStack {
                    Text("Some Text1")
                    Spacer()
                    Text("Some Text2")
                    Spacer()
                    Text("Some Text2")
                } .background(Color.red)

            } .background(Color.blue)

        }
    }

    struct SomeView: View {
        var body: some View {
            NavigationView {
                VStack {
                    Text("Hello, World!")
                } .navigationBarTitle(Text("Test"))
            }
        }
    }