SwiftUI:当我设置背景颜色时,Navbartitel 在滚动时不会移到顶部

Posted

技术标签:

【中文标题】SwiftUI:当我设置背景颜色时,Navbartitel 在滚动时不会移到顶部【英文标题】:SwiftUI: Navbartitel doesn't move to top when scrolling when I set a background color 【发布时间】:2020-10-20 12:56:43 【问题描述】:

在我当前的项目中,我想使用以下代码设置背景颜色:

NavigationView
    ZStack
        Color(color)
        GeometryReader geometry in
            VStack 
                ScrollView(showsIndicators: false)
                    VStack(spacing: 250)
                            …
                    
                 

                 NavigationLink(destination: TrainingView(übungListVM: übungListVM, daten: daten))
                    Text("startString")
                        .styleButton()
                
            
        
        .navigationBarTitle("Workout", displayMode: .automatic)
        .navigationBarItems(trailing:
                Button(action: 
                    self.showSettings.toggle()
                ) 
                    Text("Settings")
                    
                
    

问题是,当我滚动 Navtitel 时,左上角的大字体保持不变,但它应该移到顶部(正常行为)。当我注释掉“颜色(颜色)”时,一切都按预期工作。有什么想法吗?

谢谢

【问题讨论】:

【参考方案1】:

这是知道 NavigationView 的行为 - List/Form/ScrollView 应该在顶部导航栏显示模式自动更改。

您可以使用子视图的背景,例如(使用 Xcode 12 / ios 14 测试)

NavigationView
    ZStack
        GeometryReader geometry in
            VStack(spacing: 0) 
                ScrollView(showsIndicators: false)
                    VStack(spacing: 250)
                        ForEach(0..<100) 
                            Text("Item \($0)")
                        
                    
                    .frame(maxWidth: .infinity)
                    .background(
                        Color.yellow
                    )
                
                
                NavigationLink(destination: Text("TrainingView"))
                    Text("startString")
                
                .frame(maxWidth: .infinity)
                .background(
                    Color.yellow
                )
            
        

【讨论】:

谢谢,但我不适合我的情况。我可以设置滚动视图的背景,但我无法设置 NavigationLink 周围空间的背景。

以上是关于SwiftUI:当我设置背景颜色时,Navbartitel 在滚动时不会移到顶部的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Textfield - 如何在编辑模式下设置文本字段的背景颜色以清除

如何在swiftUI中的List中设置空列背景颜色?

SwiftUI:列表的背景颜色不变

更改选项卡式视图 SwiftUI 的凹槽区域背景颜色

SwiftUI 更改内联 navigationBarTitleDisplayMode 的导航栏背景颜色

SwiftUI - 点击按钮更改 VStack 的背景颜色