【问题标题】:How can I change my SwiftUI background without losing the navigation bar UI?如何在不丢失导航栏 UI 的情况下更改 SwiftUI 背景?
【发布时间】:2020-12-28 06:08:28
【问题描述】:

我正在尝试将我的视图背景颜色更改为特定颜色,但是,每当我使用基本的 Zstack 方式添加它时,它都会丢失导航栏 UI。 (见图片)

编辑代码

这个方法不适合我:

var body: some View {
    ZStack{
        Color("Background")
            .edgesIgnoringSafeArea(.vertical)
        VStack {
            ScrollView {
                ZStack {

                    VStack {
                        HStack{
                            VStack (alignment: .leading) {
                                Text("")
                            }
                        }
                    }
                }
            }
            Text("")
        }
    }
}

带有简单 ZStack 的当前 UI:

所需的用户界面:

如何在 SwiftUI 中更改背景颜色而不丢失导航栏 UI?

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    在 SwiftUI 发展的这个时期,它只能通过 UIKit 作为解决方法

    这是一个可能方法的演示(使用 Xcode 12.1 / iOS 14.1 测试):

    var body: some View {
        NavigationView {
                VStack {
                    ScrollView {
                        VStack {
                            ForEach(0..<50) {
                                Text("Item \($0)")
                            }
                        }
                    }
                    Text("Test").navigationTitle("Test")
                    .background(UINavigationConfiguration { nc in
                         nc.topViewController?.view.backgroundColor = .yellow
                    })
                }
        }
    }
    

    注意:UINavigationConfiguration 取自我的下一个答案https://stackoverflow.com/a/65404368/12299030

    【讨论】:

    • 对不起,我应该提到我在 Scrollview 之外有元素。我将发布对我的问题的编辑,以及当前 UI 的屏幕截图以及您的建议。如您所见,背景更改不起作用...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2013-09-24
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多