当前位置: > > > Swift - 将导航栏标题修改成自定义视图(图片、按钮、分段选择等)

Swift - 将导航栏标题修改成自定义视图(图片、按钮、分段选择等)

默认导航栏UINavigationController的标题是文字,通过navigationItem.titleView属性可以很方便的将其替换成自定义的UIView视图。


1,使用图片作为标题
let image = UIImage(named: "logo")
self.navigationItem.titleView = UIImageView(image: image)

2,使用按钮作为标题
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let button = UIButton(frame:CGRectMake(0, 0, 110, 110))
        button.setImage(UIImage(named: "btn3"), forState: .Normal)
        button.addTarget(self,action:Selector("titleTapped"),forControlEvents:.TouchUpInside)
        self.navigationItem.titleView = button
    }
    
    func titleTapped(){
        print("tapped")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

3,使用分段选择控件作为标题
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let items=["电话","短信"] as [AnyObject]
        let segmented=UISegmentedControl(items:items)
        segmented.center=self.view.center
        segmented.selectedSegmentIndex=0 //默认选中第1项
        segmented.addTarget(self, action: "segmentDidchange:",
            forControlEvents: UIControlEvents.ValueChanged)  //添加值改变监听
        self.navigationItem.titleView = segmented
    }
    
    func segmentDidchange(segmented:UISegmentedControl){
        //获得选项的索引
        print(segmented.selectedSegmentIndex)
        //获得选择的文字
        print(segmented.titleForSegmentAtIndex(segmented.selectedSegmentIndex))
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

评论0