导航栏

17 Mar 2025 | 5 分钟阅读

导航栏与屏幕顶部的导航控制器一起使用。 它是继承自 UIView 的 UINavigationBar 类的实例。

UINavigationBar 对象是显示在嵌入在导航控制器中的 View Controller 窗口顶部的栏。 导航栏包含导航项目,通常是用于在屏幕层次结构中导航的栏按钮项目。 典型的导航栏包含一个显示在栏左侧的后退按钮、一个中心 View Controller 标题和可选的右侧栏按钮。

Navigation Bar

导航栏最常与 UINavigationController 对象结合使用。 导航控制器创建并管理相关的导航栏。 它还使用视图控制器的属性控制导航栏的内容。

以下步骤是配置与导航控制器关联的导航栏外观所必需的。

  1. 将您的视图控制器嵌入导航控制器中,或通过实例化 UINavigationController 类来创建一个。
  2. 使用 UINavigationController 对象上的 navigationBar 属性访问相关的导航栏。
  3. 通过设置推送到导航堆栈的每个 UIViewController 上的 title 和 navigationItem 属性来控制导航栏的内容。

使用独立的导航栏

我们也可以在不使用导航控件的情况下使用导航栏。 要使用导航栏,我们必须在对象库中搜索 UINavigationBar,并将结果拖动到我们的 View Controller。 以下步骤是配置在界面中独立使用的 UINavigationBar 的外观所必需的。

  1. 设置自动布局规则以控制界面中导航栏的位置和大小。
  2. 创建一个根导航项目以提供初始标题。
  3. 配置委托对象以处理用户与导航栏的交互。
  4. 自定义导航栏的外观。
  5. 配置应用程序以推送和弹出相关的导航项目。

配置 NavigationBar 外观

UINavigationBar 的 barStyle 属性用于配置栏样式。 通常,导航栏有两种外观样式:黑色或默认。 黑色样式使导航栏具有黑色背景和白色文本。 我们也可以将其设置为半透明以使其半透明。 下表说明了用于配置导航栏的界面构建器属性。

界面构建器属性

核心属性

序号属性描述
1风格它表示导航栏的栏样式。 它控制栏的色调颜色和标题颜色。 可以在运行时使用 barStyle 和 isTranslucent 属性访问此值。
2栏色调它控制导航栏的色调颜色。 可以在运行时使用 barTintColor 属性访问此值。
3阴影图像它控制显示在导航栏下方的阴影图像。 可以在运行时使用 shadowImage 属性访问此值。
4后退图像它控制用于出现在后退按钮边缘的图像。 可以在运行时使用 backIndicatorImage 属性访问此值。
5后退蒙版它指定与后退图像属性关联的蒙版。 这必须与后退图像属性结合使用,因为它控制后退按钮在动画过渡期间的外观。 可以在运行时使用 backIndicatorTransitionMaskImage 属性访问此值。

标题属性

序号属性描述
1标题字体它表示用于在导航栏中心显示标题的字体。 可以在运行时使用 titleTextAttributes 字典中的 font 键访问此值。
2标题颜色它控制导航栏标题的颜色。 可以在运行时使用 titleTextAttributes 字典中的 foregroundColor 键访问它。
3标题阴影它指定呈现导航栏时阴影的颜色和偏移量。 可以在 titleTextAttributes 字典中使用 shadow 键访问它。

更新导航栏内容

正如我们已经讨论过的,导航栏包含导航堆栈上最顶层视图控制器的标题。 每次导航控制器更改最顶层的视图控制器时,导航栏的内容也会发生变化,包括标题和栏按钮项目。 导航栏在左、中、右三个位置包含内容。 栏按钮项目是 UIBarButtonItem 类的实例。

UINavigationBar 的 tintColor 属性用于更改导航栏中项目的色调颜色。 我们也可以通过使用 UINavigationBar 的 barTintColor 属性来更改栏的色调颜色。

左侧项目

导航栏中的左侧项目提供向后导航到导航堆栈中上一个视图控制器。 但是,如果当前最顶层的视图控制器包含自定义左侧栏按钮项目,则将显示它。 View Controller 的导航项的 leftBarButtonItem 属性用于设置自定义左侧栏按钮项目。

如果顶层视图控制器不包含自定义左侧栏按钮项目,但上一个视图控制器的导航项在其 backBarButtonItem 属性中有一个对象,则导航控制器将显示该项目。

但是,如果没有使用上一个视图控制器的标题设置自定义左侧栏按钮项目,则始终显示一个默认的后退按钮。

中心项目

如果顶层视图控制器不包含任何自定义导航栏标题视图,则显示默认的栏标题。 但是,可以使用 View Controller 的导航项的 titleView 属性设置自定义标题视图。 View Controller 的 title 属性显示为导航栏的标题。 但是,可以使用视图控制器的导航项的 title 属性来显示不同的项目。

右侧项目

导航栏的右侧是可选的,即,如果尚未设置自定义右侧项目,则右侧项目没有默认内容。 要指定自定义右侧栏按钮项目,我们使用 rightBarButtonItem 属性。

示例

ViewController.swift

输出

Navigation Bar
下一主题导航项目