NavigationController设置透明色

对于navigationController而言,在日常开发中,有很多情况与其打交道。
现在将常用的几种需求记录下下来,以备不时之需。

一、设置透明

需求:个别页面设置透明。
原理:绘制了一个透明的image做背景

self.navigationController?.navigationBar.isTranslucent = true
let color = UIColor.clear
let rect = CGRect.init(x: 0, y: 0, width: self.view.bounds.size.width, height: 64)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context?.setFillColor(color.cgColor)
context?.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
self.navigationController?.navigationBar.setBackgroundImage(image, for: .any, barMetrics: .default)
self.navigationController?.navigationBar.clipsToBounds = true

二、设置右边按钮

在设置右边的按钮的时候,图片的大小让人很蛋疼,最开始我选择了200*200的图片,在设置的时候发现,按钮的大小始终和frame的大小不一致。并且在水平位置上,也无法做到微调整,有经验的老铁们,尽请指出方法,不胜感激。

let messageButton = UIButton.init(type: .custom)
        messageButton.setBackgroundImage(#imageLiteral(resourceName: "message"), for: .normal)
        messageButton.frame = CGRect.init(x: 0, y: 0, width: 22, height: 17)
        messageButton.addTarget(self, action: #selector(messageAction(_:)), for: .touchUpInside)
        let rigthView = UIBarButtonItem.init(customView: messageButton)
        self.navigationItem.rightBarButtonItem = rigthView

你可能感兴趣的:(NavigationController设置透明色)