[英]Using a custom background behind NavigationStack in SwiftUI
這應該很簡單,但我無法找到如何在 NavigationStack 后面放置背景。 使用 NavigationView,只需在 ZStack 中嵌入一個在 NavigationView 之前調用背景視圖的問題(如舊帖子中所述: How change background color if using NavigationView in SwiftUI? )同樣的技術對 NavigationStack 不起作用. 這是我所擁有的:
struct MyAngularGradient: View {
var body: some View {
ZStack {
AngularGradient(gradient: Gradient(colors: [.red, .orange , .yellow, .green, .cyan, .blue, .indigo, .purple, .red]), center: .leading)
AngularGradient(gradient: Gradient(colors: [.red, .orange , .yellow, .green, .cyan, .blue, .indigo, .purple, .red]), center: .leading)
.offset(x: -8)
}
.ignoresSafeArea()
}
}
var body: some View {
ZStack{
MyAngularGradient()
NavigationStack {
...
}
.navigationViewStyle(.stack)
} // end ZStack
僅供參考,我在其他應用程序(使用 NavigationView)中使用了相同的 MyAngularGradient() 有什么想法嗎? 謝謝。
到目前為止我最接近的是:
struct MyView: View {
var body: some View {
NavigationStack {
ZStack {
Color.pink.ignoresSafeArea()
List {
NavigationLink("Hello") {
Text("Hello")
}
}
.navigationTitle("Title")
}
}
.scrollContentBackground(.hidden)
}
}
由於以下原因,這有些令人不滿意:
我想您可以通過在視圖的構造函數中更新UINavigationBarAppearance()
來嘗試以有限的方式更改它。
如果TabView
中有多個基於NavigationStackView
的視圖,則無法將背景應用於整個應用程序。 (我上面的例子是在TabView
中)
當一個新視圖被推入堆棧時,自定義背景就會消失。
由於.scrollContentBackground(.hidden)
修飾符,僅適用於 iOS 16+。
如果您使用 ForEach 填充List
則不起作用。 有趣的是,如果您在使用和不使用ForEach
的情況下調試層次結構,您會看到 SwiftUI 添加了一個新視圖 controller,對於ForEach
而言它是不透明的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.