【问题标题】:NavigationBarTitle automatic display mode doesn't workNavigationBarTitle 自动显示模式不起作用
【发布时间】:2020-06-28 14:12:45
【问题描述】:

我不确定如何解决这个问题。我已经用 ZStacks 实现了一个 ScrollView 和一个 NavigationView。但是,自动显示模式不起作用,ScrollView 位于其后面,Title 重叠。

https://i.stack.imgur.com/KPkGh.png https://i.stack.imgur.com/H8NwS.png

这是我当前的代码:

struct Overview: View {
    var body: some View {
        
        ZStack{
            
            NavigationView {
                    
                        ZStack {
                        Color.init("Background")
                            .navigationBarHidden(false)
                            .navigationBarTitle("Overview", displayMode: .automatic)
                            .edgesIgnoringSafeArea(.top)
                            
                            ScrollView(showsIndicators: false) {
                                VStack(spacing: 10) {
                                    ForEach(0..<10) {
                                        Text("Item \($0)")
                                            .foregroundColor(.white)
                                            .font(.largeTitle)
                                            .frame(width: 340, height: 200)
                                            .background(ColorManager.BoxColor)
                                            .cornerRadius(10)
                                    }
                                }
                                .frame(maxWidth: .infinity)
                            }
                    }
        }
        }
    }
}

【问题讨论】:

  • 不是 SwiftUI 专家,但是,我猜导航视图没有设置为 body 视图。并被设置为内部 Z 堆栈的标题。
  • 抱歉,我的 Swift 术语不太好。您能否以不同的方式解释它,或者如果您想编辑代码。

标签: swift uiscrollview swiftui ios-navigationview


【解决方案1】:
    var body: some View {
    
    NavigationView {
        
        ScrollView(showsIndicators: false) {
            VStack(spacing: 10) {
                ForEach(0..<10) {
                    Text("Item \($0)")
                        .foregroundColor(.blue)
                        .font(.largeTitle)
                        .frame(width: 340, height: 200)
                        .background(Color(.gray))
                        .cornerRadius(10)
                }
            }
            .frame(maxWidth: .infinity)
        }
        .navigationBarHidden(false)
        .navigationBarTitle("Overview", displayMode: .automatic)
    }
}

您在 ZStack 中有导航项。 ZStack 用于在彼此顶部显示重叠视图。

我相信您真正想要实现的是在滚动视图上方堆叠标题。这将通过 VStack 实现。但是,这仍然是错误的。

因为它是一个导航设置,它与 NavigationView 内联。所以它可以显示在 NavigationBar 中。它不需要与任何堆栈分开。

【讨论】:

  • 感谢 StonedStudio,它成功了。我很困惑如何解决这个问题。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多