Swift - 将导航栏标题修改成自定义视图(图片、按钮、分段选择等)
默认导航栏UINavigationController的标题是文字,通过navigationItem.titleView属性可以很方便的将其替换成自定义的UIView视图。
1,使用图片作为标题
2,使用按钮作为标题
3,使用分段选择控件作为标题

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() } }