首页 > 解决方案 > 在不使用 .barTintColor 的情况下设置导航栏的颜色?

问题描述

我正在尝试显示用户图片来代替图像的色调rightBarButton设置。barTintColorUINavigationBar

在此处输入图像描述

在 中AppDelegate,尝试过:

UINavigationBar.appearance().barTintColor = .blue

在 中viewDidLoad,尝试过:

self.navigationController?.navigationBar.backgroundColor = .blue
self.navigationController?.navigationBar.tintColor = .blue
self.navigationController?.navigationBar.barTintColor = .blue

要设置图像:

let avatarBtn = UIButton(type: .custom)
avatarBtn.frame = CGRect(x: 0.0, y: 0.0, width: 30, height: 30)
avatarBtn.setImage(UIImage(named:"myAvatar")?.withRenderingMode(.alwaysOriginal), for: .normal)

let menuBarItem = UIBarButtonItem(customView: avatarBtn)
menuBarItem.tintColor = .clear

self.navigationItem.rightBarButtonItem = menuBarItem

这些都没有奏效。如何在没有色调的情况下设置多色导航栏按钮?

提前致谢

标签: swiftuinavigationbarviewdidload

解决方案


我使用了您的代码,但就我而言,我得到了预期的结果。您使用的是哪种图像类型?

 override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.backgroundColor = .blue
    self.navigationController?.navigationBar.tintColor = .blue
    self.navigationController?.navigationBar.barTintColor = .blue
    let avatarBtn = UIButton(type: .custom)
    avatarBtn.frame = CGRect(x: 0.0, y: 0.0, width: 30, height: 30)
    avatarBtn.setImage(UIImage(named:"myAvatar1")?.withRenderingMode(.alwaysOriginal), for: .normal)
    let menuBarItem = UIBarButtonItem(customView: avatarBtn)
    menuBarItem.tintColor = .clear
    self.navigationItem.rightBarButtonItem = menuBarItem
}

在此处输入图像描述


推荐阅读