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