swift - 在不使用 .barTintColor 的情况下设置导航栏的颜色?
问题描述
我正在尝试显示用户图片来代替图像的色调rightBarButton
设置。barTintColor
UINavigationBar
在 中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
这些都没有奏效。如何在没有色调的情况下设置多色导航栏按钮?
提前致谢
解决方案
我使用了您的代码,但就我而言,我得到了预期的结果。您使用的是哪种图像类型?
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
}
推荐阅读
- javascript - 如何将基于 Jquery 和 Ajax 的脚本转换为纯 Javascript
- glsl - 为什么 Vulkan 无法识别我的 SPIR-V 着色器?
- json - Observable Angular 8 中的对象用户
- bash - 如何启动并运行 sh 格式化程序?
- java - 如何在所有 JUnit 测试中集成 Spring Instrument javaagent
- grails - Micronaut ReadTimeoutException
- vb.net - CheckForDetailedUpdate 抛出“无法绑定到未安装的部署”
- node.js - Express-JWT 身份验证中间件错误:Next 不是函数
- java - AsyncTask - How can i pass an object as parameter to an anonymous AsyncTask class
- powershell - 用于从 FTPS 服务器下载文件的 Powershell 脚本