一 、UIBarButtonItem 介绍
UIBarButtonItem 是一个继承与 UIBarItem 的一个类,常用语导航栏的左右按钮。
二 、 UIBarButtonItem 的方法说明
1、初始化的方法
》》 init 创建一个对象
public init()
》》init?(coder aDecoder: NSCoder) 内存记录创建一个对象
public init?(coder aDecoder: NSCoder)
》》生成只是图片的对象
public convenience init(image: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)
》》生成一个只含有图片的对象,并且可以在状态栏显示的图像
public convenience init(image: UIImage?, landscapeImagePhone: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)
》》生成一个只含所有文字的对象
public convenience init(title: String?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)
》》通过系统的UIBarButtonSystemItem 来创一个对象
public convenience init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: Any?, action: Selector?)
》》通过一个View 来创建对象
public convenience init(customView: UIView)
2、对象的创建和展示
1、只含所有图像对象
/**
这种快捷初始化是:只有图片的按钮
*/
let BtnItem2 = UIBarButtonItem.init(image: UIImage.init(named: "back")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(imageBarButtonItemMethod))
self.navigationItem.leftBarButtonItem = BtnItem2
展示图像
2、只含有文字的对象
/**
只有文字的初始化
*/
let BtnItem3 = UIBarButtonItem.init(title: "返回", style: .done, target: self, action: #selector(titleBarButtonItemMethod))
self.navigationItem.leftBarButtonItem = BtnItem3
展示图像
3、 使用UIBarButtonSystemItem来创建对象
/**
显示系统的 UIBarButtonSystemItem ,创建的UIBarButtonItem
*/
let ItmeS = NSMutableArray.init()
for i in 0...24 {
let BtnItem4 = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem(rawValue: i)!, target: self, action: #selector(systemItemBarButtonItemMethod))
ItmeS.add(BtnItem4)
}
self.navigationItem.leftBarButtonItems = (ItmeS as! [UIBarButtonItem])
展示图片
4、当导航栏紧凑的时候,按钮图片将会显示到状态栏里
/**
landscapeImagePhone将用于工具栏按钮图像当导航栏紧凑或浓缩栏指标。
*/
let BtnItem5 = UIBarButtonItem.init(image: UIImage.init(named: "back")?.withRenderingMode(.alwaysOriginal), landscapeImagePhone: UIImage.init(named: "back")?.withRenderingMode(.alwaysOriginal), style: .done, target: self, action: #selector(landscapeImageBarButtonItemMethod))
self.navigationItem.leftBarButtonItem =BtnItem5
5、这些按钮还可以一起显示在导航上
let BtnItem2 = UIBarButtonItem.init(image: UIImage.init(named: "back")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(imageBarButtonItemMethod))
let BtnItem3 = UIBarButtonItem.init(title: "返回", style: .done, target: self, action: #selector(titleBarButtonItemMethod))
let BtnItem4 = UIBarButtonItem.init(barButtonSystemItem: .bookmarks, target: self, action: #selector(systemItemBarButtonItemMethod))
self.navigationItem.leftBarButtonItems = [BtnItem2,BtnItem3,BtnItem4]
展示图片
3、属性的说明和使用
1、设置UIBarButtonItem按钮的文字颜色,不影响图片
BtnItem3.tintColor = UIColor.red
图像展示
2、设置背景图片 & 获取背景图片
》#设置图片
/**
设置UIBarButtonItem的背景图片
*/
BtnItem3.setBackgroundImage(UIImage.init(named: "2"), for: .normal, barMetrics: .default)
图像展示
》#获取图像
/**
获取设置的背景图片
*/
let backBtnItemImage = BtnItem3.backgroundImage(for: .normal, barMetrics: .default)
print(backBtnItemImage!)
3、设置按钮的文字的显示位置
/**
设置UIBarButtonItem文字在按钮框内的位置
horizontal >0 文字显示在水平中心偏右的位置
horizontal <0 文字显示在水平中心偏左的位置
vertical > 0 文字显示在垂直中心偏上的位置
vertical < 0 文字显示在垂直中心偏下的位置
*/
BtnItem3.setTitlePositionAdjustment(UIOffset.init(horizontal: 0, vertical: 0), for: .default)
4、调整按钮在导航栏的垂直位置
/**
条件是:self.navigationController?.navigationBar.frame 的高度大于系统默认设置的高度时才有效。
调整按钮的垂直位置
*/
BtnItem2.setBackgroundVerticalPositionAdjustment(-40, for: .default)
let adjustmentValue = BtnItem2.backButtonTitlePositionAdjustment(for: .default)
print(adjustmentValue)
图像展示
5 、一个未测试出来的方法
BtnItem3.setBackButtonBackgroundVerticalPositionAdjustment(-140, for: .default)
let VerticalPositionAdjustmentValue = BtnItem3.backButtonBackgroundVerticalPositionAdjustment(for: .default)
print(VerticalPositionAdjustmentValue)
6、全局改变按钮文字的颜色或者样式的方法
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName:UIFont.boldSystemFont(ofSize: 20),NSForegroundColorAttributeName:UIColor.red], for: .normal)