NavigationView中 List的大标题在设置背景色时不起作用
我遇到了一个非常奇怪的问题:如果我在NavigationView内放一个List,标题就会消失。但这只有在我设置背景颜色时才会发生。下面是能够工作的代码。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
ZStack {
Text("World")
}
.navigationTitle("Hello")
.toolbarBackground(Color.pink.opacity(1),for: .navigationBar)
.toolbarBackground(.visible, for: .navigationBar)
}
}
}
#Preview {
ContentView()
}

然而,一旦我把ZStack替换成List,它就不再起作用了:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
List {
Text("World")
}
.navigationTitle("Hello")
.toolbarBackground(Color.pink.opacity(1),for: .navigationBar)
.toolbarBackground(.visible, for: .navigationBar)
}
}
}
#Preview {
ContentView()
}

有什么想法为什么它不起作用,我需要做些什么才能在保留背景颜色的同时让大标题工作?
解决方案
如果你使用iOS 16及更高版本,尝试将 NavigationView 替换为 NavigationStack;同时对于iOS 15及更早版本,仍然可以像下面这样使用旧版NavigationView
if #available(iOS 16, *) {
NavigationStack {
List {
ForEach(0..<50, id: \.self) {
Text("Row \($0)")
}
}
.navigationTitle("Hello")
.toolbarBackground(Color.pink.opacity(1),for: .navigationBar)
.toolbarBackground(.visible, for: .navigationBar)
}
} else {
NavigationView {
List {
ForEach(0..<50, id: \.self) {
Text("Row \($0)")
}
}
.navigationTitle("Hello")
.toolbarBackground(Color.pink.opacity(1),for: .navigationBar)
.toolbarBackground(.visible, for: .navigationBar)
}
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。