Navigation Controller
Nói ngắn gọn có thể hiểu Navigation Controller là công cụ để quản lí những ViewController(VC) thường được dùng để push từ VC này đến VC khác trong.
Vậy Navigation bar là gì ?
Navigation bar là một thanh điều hướng xuất hiện ở phía trên cùng của màn hình ứng dụng, bên dưới thanh trạng thái, và cho phép chuyển hướng thông qua một loạt các màn hình ứng dụng thứ bậc. Khi màn hình thứ cấp được xuất hiện thì thường có xuất hiện nút quay lại trên góc trái được gán nhãn tiêu đề của bàn hình trước đó
Đây là một số hình ảnh minh hoạ về NavigationBar
Và đây là một trường hợp thanh Navigation bar được làm trong suốt
Vậy làm như thế nào để có thể Custom được thanh Navigation bar một cách cơ bản nhất
Chúng ta chỉ cần 3 dòng code này thôi
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.tintColor = UIColor.white
Dòng thứ nhất và dòng thứ 2 mình làm cho navigationBar trở nên trong suốt
Và dòng thứ 3 chính là màu của các item đặt trên NavigationBar
Nhưng nếu chúng ta đặt 3 dòng code này vào viewDidLoad() chuyện gì sẽ sảy ra ngay lúc này bạn đã đặt custom cho toàn bộ các NavigationBar của các VC thứ cấp
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.tintColor = UIColor.white
}
vậy làm sao ta có thể chỉ custom vào NavigationBar và những VC thứ cấp ta muốn ở đây ta sẽ dùng
ở đây mình sẽ ẩn thanh NavigationBar tại ViewController mình muốn ẩn
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.isNavigationBarHidden = true
}
tại những VC hiện lên tiếp theo se bị ẩn đi vì vậy mình dùng hàm để hiện lại NavigationBar
override func viewDidAppear(_ animated: Bool) {
self.navigationController?.isNavigationBarHidden = false
}
tương tự cho việc custom màu sắc của NavigationBar
Tuan Nguyen