【问题标题】:Change background color of View inside TabView having NavigationView and ScrollView in SwiftUI在 SwiftUI 中更改具有 NavigationView 和 ScrollView 的 TabView 的背景颜色
【发布时间】:2020-05-15 05:57:53
【问题描述】:

我想构建一个TabView,其中包含 4 个选项卡,其中包含集合视图。下面是我的一个名为“画廊”的标签的代码。

 var body: some View {
        NavigationView {
            ScrollView {
                GridStack(rows: 3, columns: 2) { row, column, totalColumn in
                    CardView(card: self.cards[(row * totalColumn) + column])
                }.padding().background(Color.red)
            }
            .navigationBarTitle("Gallery")
        }
    }

当我为ScrollView 提供背景颜色时,滚动不适用于NavigationView largeTitle。我怎样才能做到这一点,我想为全视图的背景赋予红色?如果我需要为所有选项卡实现相同的背景颜色怎么办?

【问题讨论】:

  • 你试过ZStack并把颜色放在后面吗?
  • 是的!但是在滚动@EnesKaraosman 时遇到问题
  • @EnesKaraosman 如果我们使用 ZStack,我们可以管理 NavigationView largeTitle 的滚动吗?

标签: ios swift swiftui


【解决方案1】:

这是可能的方法(在这种情况下滚动视图不会被破坏)

NavigationView {
    GeometryReader { gp in
        ScrollView {
            ZStack(alignment: .top) {
                Rectangle().fill(Color.red) // << background

              // ... your content here, internal alignment might be needed

            }.frame(minHeight: gp.size.height)

        }
        .navigationBarTitle("Gallery")
    }
}

【讨论】:

  • 感谢@Asperi 它正在工作,因为ZStack(alignment: .top) 解决了对齐问题。