-
NavigationBar透明控制
NavigationBar默認是半透明的。isTranslucent屬性true表示半透明,否則不透明。完全透明需要修改背景圖和隱藏底部陰影線。代碼如下
//這個看到的NavigationBar就是透明的
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)//去除navigationBar的背景色
self.navigationController?.navigationBar.shadowImage = UIImage()//去掉navigationbar 底部的細線
-
NavigationBar左邊按鈕或者右邊按鈕文字顏色
//這里注意不是修改title的顏色
navigationController?.navigationBar.tintColor = UIColor.yellow
-
NavigationBar修改背景色
//前提是不修改NavigationBar 的backGroundImage,就可以修改NavigationBar的背景色,并且會修改StatusBar的背景色
navigationController?.navigationBar.barTintColor = UIColor.purple
-
修改StatusBar的文字顏色
StatusBar只有兩種顏色,黑色和白色。但是對狀態(tài)的處理也分兩種場景,是否被NavigationBar導航。
//被NavigationBar導航
navigationController?.navigationBar.barStyle = .black
//導航狀態(tài)下,通過這個屬性修改statusBar的顏色,并且需要設置plist中UIViewControllerBasedStatusBarAppearance的值為true。因為NavigationBar導航時,StatusBar跟NavigationBar狀態(tài)一體,所以通過控制NavigaitonBar來控制StatusBar的文字顏色顯示
//不被NavigationBar導航,通過Vc里的一個方法來控制preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
//NavigationControlle狀態(tài)下,nav不會調(diào)用子vc的preferredStatusBarStyle,需要通過設置navigationBar的barStyle來修改文字顏色
return .lightContent
}
-
修改NavigationBar title的顏色
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]//修改navigationBar title 顏色
//同樣title的大小和背景色也可以通過這種方式來控制