如何在NavigationView上更改后退按钮的颜色

时间:2019-06-11 00:13:38

标签: swiftui

单击按钮时,将带您进入新视图,并在左上角放置一个后退按钮。我不知道哪个属性控制后退按钮的颜色。我尝试添加accentColor和前景颜色,但它们仅编辑视图中的项目。

    var body: some View {
        NavigationView {
            NavigationButton(destination: ResetPasswordView()) {
                Text("Reset Password")
                .foregroundColor(Color(red: 0, green: 116 / 255, blue: 217 / 255))
                .padding()
            }
       }
    }

8 个答案:

答案 0 :(得分:2)

我怀疑这是正确的方法,但是我通过修改SceneDelegate.swift来设置窗口色调颜色来使其正常工作。

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

    // Use a UIHostingController as window root view controller
    let window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = UIHostingController(rootView: ContentView())
    window.tintColor = .green // set the colour of the back navigation text
    self.window = window
    window.makeKeyAndVisible()
}

答案 1 :(得分:1)

您可以使用NavigationView上的accentColor属性来设置后退按钮的颜色,如以下简单示例所示:

var body: some View {
    NavigationView {
        List(1..<13) { item in
            NavigationLink(destination: Text("\(item) x 8 = \(item*8)")) {
                Text(String(item))
            }
        }.navigationBarTitle("Table of 8")
    }.accentColor( .black) // <- note that it's added here and not on the List like navigationBarTitle()
}

答案 2 :(得分:0)

一段时间以来,我试图做同样的事情,但是我认为还没有SwiftUI解决方案。 UIKit的外观是可以完成工作的一件事(如果它适用于您的用例)

UINavigationBar.appearance().tintColor = .black

答案 3 :(得分:0)

这对我有用:

let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.backButtonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.white]

答案 4 :(得分:0)


.navigationBarBackButtonHidden(true)
        .navigationBarItems(leading:
                Button(action: {presentation.wrappedValue.dismiss()}, label: {
                    HStack {
                    Image(systemName: "chevron.backward")
                        .foregroundColor(Color(UIColor.darkGray))
                    Text(username)
                        .foregroundColor(Color(UIColor.darkGray))
                        .font(UIHelper.largeSize())
                    }
                })

答案 5 :(得分:0)

将 .accentColor 修饰符添加到 NavigationView,如下所示

NavigationView {
    Text("Hello World")
      .toolbar {
                    ToolbarItem(placement: .navigationBarLeading) {
                        Button("Close") { }
                    }
            }
 }
 .accentColor(.themeColor)

答案 6 :(得分:0)

如果您使用的是 XCode 12,请考虑在 Assets.xcassets 中设置 AccentColor。 XCode 将在应用中的所有导航返回按钮上使用此颜色。

请注意,这也会影响其他 UI 元素。其中之一是按钮。您始终可以使用重音颜色修饰符覆盖它:

Button("Button With Different Accent Color") { 
   // do something useful
}
.accentColor(.red)

答案 7 :(得分:-1)

您可以尝试将前景色或accentColor设置为NavigationView(在倒数第二个括号之后)