首页 > 解决方案 > Swiftui:后退按钮的导航栏色调没有改变

问题描述

在应用程序中,用户可以根据一组特定的选项更改强调色。强调色以这种方式设置,但是,也设置了一个 AccentColor 资源。我已经尝试删除它,但它并没有解决问题。

var body: some Scene {
    WindowGroup {
        ContentView(user: $data.user, saveAction: data.save)
            .onAppear(perform: data.load)
            .tint(data.user.accentColor == nil ? Color("AccentColor") : data.user.accentColor!.getColor())
    }
}

重音颜色存储为字符串,getColor() 函数获取该字符串并为其返回一个 Color()。

我还有一些视图可以根据用户选择的强调色来改变颜色。使用当前代码,它适用于除导航栏中的后退按钮之外的所有内容。对 Picker 中的复选标记也执行相同的操作。我怎样才能让那些与用户选择的颜色相匹配?

在此处输入图像描述

您可以看到强调色设置为橙色。在下面你可以看到后退按钮仍然是蓝色的。

在此处输入图像描述

如果你想测试一下。您可以设置如下所示的内容视图。将 AccentColor 资源留空,或者您可以将其设置为随机颜色。您会看到后退按钮不会随着 tint() 中的内容而改变颜色。NavigationLinkView 只是一个视图,其中没有任何内容,而是一个具有导航标题的列表。

struct ContentView: View {
var body: some View {
    NavigationView {
        List {
            NavigationLink("Test Link", destination: {
                NavigationLinkView()
            })
            
            Button("Fake Button") {
                
            }
        }
        .navigationTitle("Test")
    }
    .tint(.yellow)
}
}

编辑:在进一步测试之后,accentColor() 似乎确实有效,但是,Xcode 表示很快就会弃用它并使用 tint()。似乎它是 tint() 的问题。

标签: iosswiftuiswiftui-navigationview

解决方案


推荐阅读