UINavigationBar, UINavigationItem, UIBarButtonItem三者之间的关系
- UINavigationBar 导航栏,与导航控制器(UINavigationController)是1对1关系,管理一个视图控制器的栈,用来显示树形结构中的视图.
- UINavigationItem 导航栏项目,在每个界面中都会看到,分为左,中,右三个区域.UINavigationBar与UINavigationItem是1对多关系,因为每个页面都会有一个UINavigationItem.
-
UIBarButtonItem 导航栏中的左右按钮.
image.png
代码:
import UIKit
class ViewController: UIViewController {
var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let screen = UIScreen.main.bounds
//1. 创建NavigationBar
let navigationBarHeight: CGFloat = 44//默认高度
let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 20, width: screen.size.width, height: navigationBarHeight))
let saveButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.save, target: self, action: #selector(ViewController.save(_:)))
let addButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.add, target: self, action: #selector(ViewController.add(_:)))
let navigationItem = UINavigationItem(title:"")
navigationItem.leftBarButtonItem = saveButtonItem
navigationItem.rightBarButtonItem = addButtonItem
navigationBar.items = [navigationItem]
self.view.addSubview(navigationBar)
//2. 添加标签
let labelWidth: CGFloat = 84
let labelHeight: CGFloat = 21
let labelTopView: CGFloat = 198
self.label = UILabel(frame: CGRect(x: (screen.size.width - labelWidth)/2, y: labelTopView, width: labelWidth, height: labelHeight))
self.label.text = "Label"
self.label.textAlignment = .center
self.view.addSubview(self.label)
}
@objc func save(_ sender: AnyObject){
self.label.text = "点击Save"
}
@objc func add(_ sender: AnyObject){
self.label.text = "点击Add"
}
}

网友评论