49-Swift 之UIBarButtonItem的使用和说明

一 、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

展示图像

49-Swift 之UIBarButtonItem的使用和说明_第1张图片
4707D5DF-6CDA-4B27-8D9D-49249BD743FD.png
2、只含有文字的对象
/**
 只有文字的初始化
 */
let BtnItem3 = UIBarButtonItem.init(title: "返回", style: .done, target: self, action: #selector(titleBarButtonItemMethod))
self.navigationItem.leftBarButtonItem = BtnItem3

展示图像

49-Swift 之UIBarButtonItem的使用和说明_第2张图片
889483DD-0859-4E6A-9D82-AF475A017E8D.png
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])

展示图片


49-Swift 之UIBarButtonItem的使用和说明_第3张图片
![B992BAE8-205B-4714-B005-1F6450A2B394.png](http://upload-images.jianshu.io/upload_images/3280268-19f336b41e2455b5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
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]

展示图片

49-Swift 之UIBarButtonItem的使用和说明_第4张图片
9765C96A-A610-49FA-8885-F870674E154D.png

3、属性的说明和使用

1、设置UIBarButtonItem按钮的文字颜色,不影响图片
BtnItem3.tintColor = UIColor.red

图像展示

49-Swift 之UIBarButtonItem的使用和说明_第5张图片
6C32274B-A55D-4CC8-A040-F8CD34B0F2D7.png
2、设置背景图片 & 获取背景图片

》#设置图片

/**
 设置UIBarButtonItem的背景图片
 */
BtnItem3.setBackgroundImage(UIImage.init(named: "2"), for: .normal, barMetrics: .default)

图像展示

49-Swift 之UIBarButtonItem的使用和说明_第6张图片
1BC0EC3C-6A49-47D9-B892-8F06DBCD0BC9.png

》#获取图像

/**
 获取设置的背景图片
 */
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)

图像展示

49-Swift 之UIBarButtonItem的使用和说明_第7张图片
BC6C1F5C-6C7C-4572-8692-1927769CF4B9.png
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)

你可能感兴趣的:(49-Swift 之UIBarButtonItem的使用和说明)