gpt4 book ai didi

ios - SwiftUI:iOS 15 中的 NavigationBar 和 TabBar 出现故障

转载 作者:行者123 更新时间:2023-12-04 14:48:56 24 4
gpt4 key购买 nike

在 SwiftUI 中,我想为我的 View 使用背景色,同时将 navigationViewStyle 设置为 .stack,以强制使用单列堆栈导航加大尺寸的设备。

    var body: some View {
TabView {
NavigationView {
ScrollView {
ForEach(0..<100) { _ in
Text("Hello, world!")
.padding()
}
.frame(maxWidth: .infinity)
}
.navigationTitle("Demo")
// .background(Color.yellow) // I can do this …
}
// .navigationViewStyle(.stack) // … or this, but not both!
.tabItem {
Label("Demo", systemImage: "swift")
}
}
}

但是,当我同时执行这两项操作时,向下滚动时导航栏不会折叠。导航栏和标签栏也没有背景。

Screenshot of the simulator showing the issue described above

当我只设置背景,但省略设置 navigationViewStyle 的行时,在纵向模式或更小的设备上一切看起来都很好。但是在横向的大尺寸设备上,它看起来像这样:

Screenshot of the simulator showing the issue described above

所以我想如果不设置 navigationViewStyle 我真的无法做到这一点。

我该怎么做才能解决这个问题?这是应该由 Apple 修复的错误吗?非常感谢所有帮助。

最佳答案

ScrollView 上使用 .navigationViewStyle View 修饰符

struct ContentView: View {
var body: some View {
TabView {
NavigationView {
ScrollView {
ForEach(0..<100) { _ in
Text("Hello, world!")
.padding()
}
.frame(maxWidth: .infinity)
}
.navigationTitle("Demo")
.background(Color.yellow)
.navigationViewStyle(.stack)

}
.tabItem {
Label("Demo", systemImage: "swift")
}
}
}
}


更新

我想,这是一个错误。它不起作用。

1

如果您所有的 ScrollView 都具有相同的背景,请在一个 View 上使用一次。

struct ScrollViewBackground: ViewModifier {

let color: Color

func body(content: Content) -> some View {
content
.ignoresSafeArea(edges: .horizontal)
.onAppear {
UIScrollView.appearance().backgroundColor = UIColor(color)
}

}
}

extension View {
func setBackgroundColor(color: Color) -> some View {
return self.modifier(ScrollViewBackground(color: color))
}
}

2

使用introspect访问底层 UIScrollView 并更改其背景。您还需要在 ScrollView 上使用 .ignoresSafeArea(edges: .horizo​​ntal)

ScrollView {
Text("Item 2")
}
.introspectScrollView { scrollView in
scrollView.backgroundColor = UIColor(color.yellow)
}

关于ios - SwiftUI:iOS 15 中的 NavigationBar 和 TabBar 出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69407467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com