使用swift自定义导航栏外观(例子)

・4 分钟阅读

更改导航栏颜色

  • 要更改所有视图控制器的导航栏颜色,你必须在AppDelegate.swift文件中设置它,

  • AppDelegate.swift中将以下代码添加到didFinishLaunchingWithOptions函数中


var navigationBarAppearace = UINavigationBar.appearance()

navigationBarAppearace.tintColor = uicolorFromHex(0xffffff)
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517)
  • 在这里tintColor属性改变导航栏的背景颜色

  • barTintColor属性对该对象的颜色影响

  1. 后退指示器图像
  2. 按钮标题
  3. 按钮图标
  • 此代码不影响导航栏标题的颜色,它仍然是黑色

Picture

Picture

更改导航栏标题的颜色

  • AppDelegate.swift中将以下代码添加到didFinishLaunchingWithOptions函数中

var navigationBarAppearace = UINavigationBar.appearance()

navigationBarAppearace.tintColor = uicolorFromHex(0xffffff)
navigationBarAppearace.barTintColor = uicolorFromHex(0x034517)

// change navigation item title color
navigationBarAppearace.titleTextAttributes =[NSForegroundColorAttributeName:UIColor.whiteColor()]
  • titleTextAttributes影响标题文本在这里我设置标题文本颜色为白色

Picture

以编程方式更改导航栏标题

  • 为了更改导航项(在ViewController中)的标题,你必须在ViewController的viewDidLoad函数中设置标题,

override func viewDidLoad() {
 super.viewDidLoad()

 self.navigationItem.title ="New title"
}
  • 下面是该更改之后的一个例子输出

Picture

更改状态栏颜色

  • 在上面的例子中,状态栏颜色为黑色

  • 为了改变状态栏的颜色,我们做了两个修改,

  • 首先定义属性 view controller-based status barinfo.plist文件中的属性(在将它设置为NO时)

Picture

  • 如果你通过vim打开它( vim <path to project>/info.plist )你可以看到它包含一个属性调用 UIViewControllerBasedStatusBarAppearance 使用false

Picture

  • 然后在AppDelegate.swift中定义didFinishLaunchingWithOptions函数的状态栏颜色(这会影响应用程序中的所有视图控制器,因为它在AppDelegate.swift中定义),
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

Picture

以十六进制值定义颜色

  • 在上面的代码中我定义了一个自定义函数来定义颜色为hex

func uicolorFromHex(rgbValue:UInt32)->UIColor{
 let red = CGFloat((rgbValue & 0xFF0000) >> 16)/256.0
 let green = CGFloat((rgbValue & 0xFF00) >> 8)/256.0
 let blue = CGFloat(rgbValue & 0xFF)/256.0

 return UIColor(red:red, green:green, blue:blue, alpha:1.0)
}
Zxzx8082 profile image