美文网首页花落√莫相思iOS
49-Swift 之UIBarButtonItem的使用和说明

49-Swift 之UIBarButtonItem的使用和说明

作者: NetWork小贱 | 来源:发表于2017-07-23 11:45 被阅读60次

    一 、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](https://img.haomeiwen.com/i3280268/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)
    

    相关文章

      网友评论

      本文标题:49-Swift 之UIBarButtonItem的使用和说明

      本文链接:https://www.haomeiwen.com/subject/cropkxtx.html