繁体   English   中英

Xcode 11.4 导航栏按钮问题

[英]Xcode 11.4 Navigation Bar Button Issues

自从更新到 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 的属性。 它可以让你改变文本的颜色,改变图像本身,但没有颜色属性。

我找到了一个适用于我的实例的解决方案。 它有效是因为我在代码中创建了我的 viewControllers,例如:

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()

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

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

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

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

    if #available(iOS 13.0, *) {
        self.navigationController?.navigationBar.standardAppearance.configureWithDefaultBackground()
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM