0

自从更新到 Xcode 11.4 后,我遇到了一个问题,即我无法弄清楚如何更改导航栏中后退箭头的颜色。

在我能够简单地使用之前:

navigationBar.barTintColor = DisplayUtils.sweetGreenColor()

但是,11.4 迫使我使用标准外观功能来设置导航栏和所有内容的颜色。这没什么大不了的,这适用于设置 barTint 和标题颜色:

navigationBar.standardAppearance.backgroundColor = DisplayUtils.sweetGreenColor()

let buttonAppearance = UIBarButtonItemAppearance()
buttonAppearance.normal.titleTextAttributes = [.foregroundColor : DisplayUtils.whiteColor()]
navigationBar.standardAppearance.buttonAppearance = buttonAppearance

navigationBar.standardAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: DisplayUtils.whiteColor(), NSAttributedString.Key.font: UIFont(name: "Roboto-Bold", size: 18) as Any]

我只是没有在UIBarButtonItemAppearance对象上看到替换 barTintColor 的属性。它允许您更改文本的颜色,更改图像本身,但没有颜色属性。

4

2 回答 2

0

我找到了一个适用于我的实例的解决方案。它之所以有效,是因为我正在使用以下代码创建视图控制器:

if let stbrd = self.storyboard {
   if let vc: ViewController = stbrd.instantiateViewController(withIdentifier: "VC") as? ViewController {
                self.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) // remove back button text
                self.navigationItem.backBarButtonItem?.tintColor = DisplayUtils.sweetGreenColor()
                self.navigationController?.pushViewController(vc, animated: true)
   }
}

这是行:

self.navigationItem.backBarButtonItem?.tintColor = DisplayUtils.sweetGreenColor()

这正确设置了新呈现的视图控制器上的后退箭头的颜色。

我仍然看不到如何像在此更改之前那样在视图控制器本身上简单地设置该颜色。所以,如果有人能提供这些知识,那就太好了。

于 2020-03-27T18:24:18.693 回答
0

在情节提要上,为您的导航控制器将“条形色调”更改为其“默认”值,然后在您的代码上,您可以像往常一样更改它。

通过以编程方式简单地首先将导航栏颜色更改为默认值,然后您可以更新您已经在做的事情。

    if #available(iOS 13.0, *) {
        self.navigationController?.navigationBar.standardAppearance.configureWithDefaultBackground()
    }
于 2020-03-31T15:38:10.347 回答