在许多应用中, 我们最常用到的控件之一就是UINavigationBar和UINavigationController, 但这里有一些细节需要注意, 下面让我们一起来看看吧.
1.准备界面
2.预备知识
初始化UIBarButtonItem有好几种方法, 如下:
// 1.自定义图片的UIBarButtonItem样式
init(image: UIImage?, style: UIBarButtonItemStyle, target: AnyObject?, action: Selector)
// 2.自定义风景图片的UIBarButtonItem样式
init(image: UIImage?, landscapeImagePhone: UIImage?, style: UIBarButtonItemStyle, target: AnyObject?, action: Selector)
// 3.自定义纯文字的的UIBarButtonItem样式
init(title: String?, style: UIBarButtonItemStyle, target: AnyObject?, action: Selector)
// 4.使用系统自带的UIBarButtonItem样式
init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: AnyObject?, action: Selector)
// 5.自定义视图的UIBarButtonItem样式
init(customView: UIView)
3.ViewControllerOne
override func viewDidLoad() {
super.viewDidLoad()
// 1.设置UINavigationBar的背景颜色
self.navigationController?.navigationBar.backgroundColor = UIColor.redColor()
// 2.设置UINavigationBar的样式 、
self.navigationController?.navigationBar.barStyle = UIBarStyle.BlackTranslucent
// 3.开启UINavigationBar的透明效果
self.navigationController?.navigationBar.translucent = true
}
4.VIewControllerTwo
class ViewControllerTwo: UIViewController, UIGestureRecognizerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// 1.调用自定义的BarButtonItem方法
self.customNavigationBarButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// 2.自定义BarButtonItem
func customNavigationBarButtonItem() {
// 2.1.自定义左上角的BarButtonItem, UIBarButtonItemStyle的样式在iOS8之后只能选择Plain和Done, Bordered样式已经被弃用了
let leftBarButtonItem = UIBarButtonItem(title: "左边", style: UIBarButtonItemStyle.Plain, target: self, action: "leftBarButton")
// 2.2.自定义右上角的BarButtonItem, UIBarButtonItemStyle的样式在iOS8之后只能选择Plain和Done, Bordered样式已经被弃用了
let rightBarButtonItem = UIBarButtonItem(title: "右边", style: UIBarButtonItemStyle.Plain, target: self, action: "rightButton")
// 2.3.只适用于系统的BackItem, 自定义的leftBarButtonItem不适用
//UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), forBarMetrics: UIBarMetrics.Default)
// 2.4.设置手势的代理对象为self
self.navigationController?.interactivePopGestureRecognizer.delegate = self;
// 2.5.添加自定义的rightBarButtonItem
self.navigationItem.rightBarButtonItem = rightBarButtonItem
// 2.6.添加自定义的leftBarButtonItem
self.navigationItem.leftBarButtonItem = leftBarButtonItem
// 2.7.目前找不到直接自定义backBarButtonItem的方案
//self.navigationItem.backBarButtonItem = backBarButtonItem
}
// 3.自定义leftBarButtonItemAction的方法
func leftBarButton() {
// 3.1.输出
println("我是左边的BarButtonItem")
// 3.2.回到上一个ViewController
self.navigationController?.popViewControllerAnimated(true)
}
// 4.自定义rightBarButtonItemAction的方法
func rightButton() {
// 4.1.输出
println("我是右边的BarButtonItem")
}
}
4.最终效果
项目工程地址: 链接: http://pan.baidu.com/s/1jGtjvoU 密码: jb83