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

展示图像

4707D5DF-6CDA-4B27-8D9D-49249BD743FD.png
2、只含有文字的对象
/**
 只有文字的初始化
 */
let BtnItem3 = UIBarButtonItem.init(title: "返回", style: .done, target: self, action: #selector(titleBarButtonItemMethod))
self.navigationItem.leftBarButtonItem = BtnItem3

展示图像

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])

展示图片


![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]

展示图片

9765C96A-A610-49FA-8885-F870674E154D.png

3、属性的说明和使用

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

图像展示

6C32274B-A55D-4CC8-A040-F8CD34B0F2D7.png
2、设置背景图片 & 获取背景图片

》#设置图片

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

图像展示

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)

图像展示

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容