©️ OverlookArt
首页 / AppleDevelop / UIKit / 导航条样式

导航条样式

在 iOS 13 以后使用 UINavigationBarAppearance 自定义导航条样式。

创建 UINavigationBarAppearance对象后,使用该类的方法和属性来指定导航栏中项目所需的外观。使用 UIBarAppearance 继承的属性来配置导航栏本身的背景和阴影属性。

 1// BasicViewController.swift
 2
 3class BasicViewController: UIViewController {
 4
 5    private lazy var navigationBarAppearance: UINavigationBarAppearance = {
 6        let barAppearance = UINavigationBarAppearance()
 7        // 设置导航栏标题富文本样式
 8        barAppearance.titleTextAttributes
 9        // 设置导航栏返回指示图,任何一张图为空就会使用系统默认的
10        barAppearance.setBackIndicatorImage(UIImage(named: ""), transitionMaskImage: UIImage(named: ""))
11
12        // 设置背景模糊效果
13        barAppearance.backgroundEffect
14
15        // 设置背景色
16        barAppearance.backgroundColor
17
18        // 设置背景图,在背景色顶部展示
19        barAppearance.backgroundImage
20
21        // 设置展示背景图内容模式
22        barAppearance.backgroundImageContentMode
23
24        // 设置阴影颜色
25        barAppearance.shadowColor
26
27        // 设置阴影图片
28        barAppearance.shadowImage
29
30        // 使用默认背景和阴影值配置外观。
31        barAppearance.configureWithDefaultBackground()
32
33        // 用一组适合当前主题的不透明颜色配置外观。
34        barAppearance.configureWithOpaqueBackground()
35
36        // 配置具有透明背景且无阴影的外观
37        barAppearance.configureWithTransparentBackground()
38
39        return barAppearance
40
41    }()
42
43    override func viewDidLoad() {
44        super.viewDidLoad()
45        navigationController?.navigationBar.standardAppearance = navigationBarAppearance
46        navigationController?.navigationBar.scrollEdgeAppearance = navigationBarAppearance
47        navigationController?.navigationBar.compactAppearance = navigationBarAppearance
48
49        // 设置导航条 tintColor 可已调整导航按钮的样式
50        navigationController?.navigationBar.tintColor = .black
51    }
52}