更改不同屏幕上的导航栏颜色和标题颜色



在我的iPhone应用程序中,我有两种NavigationC0ntroller背景颜色和标题颜色

  1. 白色背景+红色标题
  2. 清晰的颜色背景+白色标题

我正在使用以下通用代码来更改背景颜色和标题颜色

@objc class Helper : NSObject{
class func restNavigationBarWithNavigationController(navigationController : UINavigationController , withColor : UIColor,isTranslucent : Bool )
{
navigationController.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController.navigationBar.shadowImage = UIImage()
navigationController.navigationBar.isTranslucent = isTranslucent
navigationController.view.backgroundColor = withColor
navigationController.navigationBar.backgroundColor = withColor
}
}

我在视图加载和视图控制器的视图显示中调用上面,如下所示

self.navigationController?.navigationBar.tintColor = .white
Helper.restNavigationBarWithNavigationController(navigationController: 
self.navigationController!, withColor: .clear, isTranslucent: true)

但是如果我将屏幕从白色弹出到红色标题,上面的代码不起作用,反之亦然。

请让我知道我在这里做错了什么。

任何想法或建议都会很棒。(仅供参考:我在Objective-c视图控制器中使用相同的代码库(

好吧,如果要更改每个屏幕中的导航栏样式,可以使用以下代码:

class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// White color Background + Red Color Title
navigationController.navigationBar.barTintColor = .white
navigationController.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.red]
}
}

//下一个

class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Clear color Background + White color title
navigationController.navigationBar.barTintColor = .clear
navigationController.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
}
}

这在 Swift 4 中有效

Swift 5将NSAttributedStringKey类型分成NSAttributedString.Key,使用方式如下(Swift 5.1.3(。

func configureNavigationBar() {
navigationController?.navigationBar.barTintColor = .darkGray
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
}

相关内容

  • 没有找到相关文章

最新更新