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

results matching ""

    No results matching ""