前言

纯代码设置iOS导航栏和状态栏。效果图👇

iOS导航栏和状态栏设置

导航栏设置(Navigation Bar)

iOS中的导航栏使用UINavigationBar,它继承自UIView。可以通过它控制导航栏显示的内容等等,一个导航栏通常包括:标题和左右侧按钮。

UINavigationBar示意图:

nav bar detail

UINavigationBar几个重要属性:

  1. tintColor: 导航栏左右侧按钮的颜色
  2. titleTextAttributes: 导航栏标题的属性
  3. translucent: 导航栏半透明属性,是一个BOOL值,默认为YES(即:默认导航栏是半透明的)
  4. barTintColor: 导航栏背景色

UINavigationBar内部结构:

导航栏(UINavigationBar)内部可以包含多个UINavigationItem,UINavigationBar的UINavigationItem可以通过它的items属性获得。
UINavigationBar通过类似进栈和出栈的方式压入和弹出UINavigationItem。通常只需一个UINavigationItem。

  1. 向UINavigationBar中插入UINavigationItem:
    - (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated
  2. 弹出最上方的一个UINavigationItem:
    - (UINavigationItem *)popNavigationItemAnimated:(BOOL)animated
  3. 获取最上方的UINavigationItem: 通过UINavigationBar的topItem属性

UINavigationItem:

UINavigationItem管理着显示在UINavigationBar中的内容。一个UINavigationItem通常包含:标题和左右侧的按钮。

重要属性

  1. title: 标题
  2. leftBarButtonItem: 左侧按钮
  3. rightBarButtonItem: 右侧按钮

左右侧按钮设置

左右侧按钮通常都是UIBarButtonItem对象,可以通过如下代码设置:

    UIBarButtonItem *btnLeft = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:self action:nil];

代码实现:

navbar code

状态栏设置(Status Bar)

状态栏就是现实时间,运营商,电量的地方;如果导航栏背景色为深色的话,默认的状态栏无法清楚的显示。
状态栏的设置步骤有如下几步:

  1. 在.plist文件将 UIViewControllerBasedStatusBarAppearance 设置为 YES
  2. 在 viewDidLoad 方法中添加
    [self setNeedsStatusBarAppearanceUpdate];
  3. 添加 preferredStatusBarStyle 方法:
    - (UIStatusBarStyle)preferredStatusBarStyle
    {
    return UIStatusBarStyleLightContent;
    }

参考