title、leftBarButtonItem、rightBarButtonItem的颜色

当我们self.title = "xxx"之后,默认颜色是黑色,可以通过titleTextAttributes修改title颜色:

        //修改title的颜色
        self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]

当我们用任何颜色的图片自定义UIBarButtonItem,然后赋给self.navigationItem.rightBarButtonItem或self.navigationItem.leftBarButtonItem,图片颜色都会是蓝色的,这是因为navigationBar.tintColor控制着它们的颜色,而默认是蓝色

        let rightButtonItem = UIBarButtonItem(image: UIImage(named: "call"), style: UIBarButtonItem.Style.plain, target: self, action: #selector(clickedRightButton))
        self.navigationItem.rightBarButtonItem = rightButtonItem

修改navigationBar.tintColor就可以改变leftBarButtonItem和rightBarButtonItem的图片和文字的颜色

        //修改leftBarButtonItem或rightButtonItem的图片和文字颜色
        self.navigationController?.navigationBar.tintColor = .white

如果想要leftBarButtonItem和rightBarButtonItem的图片保持原色(非纯色),可以修改图片的RenderingMode为.alwaysOriginal,这样就可以保证图片不会成为与navigationBar.tintColor相同的纯色

        //使leftBarButtonItem和rightBarButtonItem的图片保持原色(非纯色)
        let image = UIImage(named: "male")?.withRenderingMode(.alwaysOriginal)
        
        let leftButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItem.Style.plain, target: self, action: #selector(clickedLeftButton))
        self.navigationItem.leftBarButtonItem = leftButtonItem

值得一提的是,创建UIBarButtonItem的时候,图片尺寸要合适,因为UIBarButtonItem不会去约束image的尺寸。

另外,当我们创建自定义leftBarButtonItem和rightBarButtonItem的UIBarButtonItem时,尽量不要用init(customView: UIView),因为这样按下的效果很难做到和系统默认效果相同。默认效果是在原来的基础上,添加一层navigationBar.barTintColor(navigationBar的背景色)的颜色。

还有,navigationBar底部有一条线,控制它的显示可以通过shadowImage = UIImage()去掉,shadowImage =nil显示

        self.navigationController?.navigationBar.shadowImage = UIImage()

 

转载于:https://www.cnblogs.com/liuyongfa/p/9812260.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值