Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS SwiftUI:是否将NavigationView与ScrollView和ZStack正确堆叠?_Ios_Swift_Swiftui - Fatal编程技术网

iOS SwiftUI:是否将NavigationView与ScrollView和ZStack正确堆叠?

iOS SwiftUI:是否将NavigationView与ScrollView和ZStack正确堆叠?,ios,swift,swiftui,Ios,Swift,Swiftui,所以我一直在玩SwiftUI,我似乎无法正确地将NavigationView与ScrollView和ZStack堆叠在一起 我试图获得一个背景为.black的视图。代码如下: MainView.swift var body: some View { NavigationView { ChildView() } } var body: some View { ZStack { Color.black.edgesIgnoringSafeAre

所以我一直在玩SwiftUI,我似乎无法正确地将
NavigationView
ScrollView
ZStack
堆叠在一起

我试图获得一个背景为
.black
的视图。代码如下:

MainView.swift

var body: some View {
    NavigationView {
        ChildView()
    }
}
var body: some View {
    ZStack {
        Color.black.edgesIgnoringSafeArea(.all)
        ScrollView {
            ...
        }
    }
} 
ChildView.swift

var body: some View {
    NavigationView {
        ChildView()
    }
}
var body: some View {
    ZStack {
        Color.black.edgesIgnoringSafeArea(.all)
        ScrollView {
            ...
        }
    }
} 
上面的代码给了我一个黑色的背景,但破坏了导航栏的行为

外观:

它的外观:

因此,在滚动时,导航似乎不会从
scrollEdgeAppearance
转到
standardAppearance


有什么想法吗?

滚动视图尽量向上放置,否则标题动画将无法工作。以下代码符合您的要求:

struct ChildView: View {
    var body: some View {
        ScrollView {
            VStack(spacing: 20) {
                ForEach(0..<40) { _ in
                    Text("Hello, World!")
                        .frame(maxWidth: .infinity)
                }
            }
            .background(Color.green.edgesIgnoringSafeArea(.all))
        }
        .navigationBarTitle("Discover")
    }
}

struct ContentView: View {
    var body: some View {
        NavigationView {
            ChildView()
        }
    }
}

ZStack不是您示例中的第一个子对象吗?不,不完全是,当滚动到滚动视图的底部时,您会看到背景仍然是白色的。因此,底层视图的颜色似乎是白色,而覆盖视图的颜色是黑色。我正在尝试实现一个完全黑色的背景。有什么想法吗?见编辑。我想这是你想要的。这是一个非常有趣的问题。酷,你在哪里添加扩展?我的意思是,为了保持代码的干净,通常会将它放在一个单独的文件中,并使用一个特殊的名称,这个问题描述得很好:我回答了你的问题了吗?如果是,请接受它作为解决方案。