NavigationBar BarButtonItem样式
方法1:
letbtnItem1 =UIBarButtonItem(image:UIImage(named:"zhiyuan"), style: .plain,
target:self, action:#selector(didTapRight))
方法2:
letbutton =UIButton(type: .custom) button.setImage(UIImage(named:"nongmin"), for: .normal)
button.sizeToFit()
button.addTarget(self, action:#selector(didTapRight), for: .touchUpInside) letbtnItem2 =UIBarButtonItem(customView: button)
这两种方式创建自定义图片的UIBarButtonItem所得的结果是不一样的,如下图:图片本身有颜色,方法1生成的是没有颜色的,方法2则可以还原图片原有颜色。
如果一定要使用方法一,又想他的tintrColor颜色是原有颜色,则可以这样修改:
let btnItem1 = UIBarButtonItem(image: nil, style: .plain, target: self, action: #selector(didTapRight))
btnItem1.image = UIImage(named: "zhiyuan")?.withRenderingMode(.alwaysOriginal)
这样也是可以显示原图的,方法一之所以不显示原图因为他的图片渲染模式是.alwaysTemplate, 这个属性的作用是:Always draw the image as a template image, ignoring its color information 。
导航栏隐藏
1.全部隐藏
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated)
navigationController?.navigationBar.alpha = 0
//整个导航栏隐藏,包括items,但导航栏位置还在,tableView会在导航栏下面开始布局(0, 64),即偏移了64
如果这个时候想让tableView从(0,0)开始布局,可以加上这句
tableView.contentInsetAdjustmentBehavior = .never
但会发现下面又看不完了,可以用这个:
tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 88, right: 0)
}
或者:
navigationController?.setNavigationBarHidden(true, animated: false)
//这个是系统的方法,隐藏后tableView会从状态栏下面开始布局(0, statusBar.frame.height)
当然,也可以使用.never这句来使其到达顶部。
只隐藏导航栏,不隐藏items
//导航栏定制-透明效果(背景图片和阴影图片设为空) navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) navigationController?.navigationBar.shadowImage = UIImage()
//相当于将底图置空了