Swift - 导航栏背景全透明效果的实现(沉浸式效果

本文详细介绍如何在iOS应用中实现导航栏透明效果,通过设置导航栏背景和阴影为空图片,去除灰色分隔线,提供沉浸式用户体验。并在视图出现和消失时,分别设置和还原导航栏样式,确保只对当前页面生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.hangge.com/blog/cache/detail_2067.html

我们常常会发现一些 App 的导航栏背景是完全透明的,比如下面的 QQ 音乐播放界面:

  

原文:Swift - 导航栏背景全透明效果的实现(沉浸式效果)

 

    由于导航栏背景透明,那么整个视图的背景便会占据全部的可视区域,从而让用户有一种沉浸式的体验。下面通过样例演示如何实现这个效果。

 

1,实现原理 

(1)如果想让导航栏(navigationBar)透明,只需将导航栏背景图片(backgroundImage)设置为一个空的 image 即可。不过这样设置后,导航栏下方还是会有一条灰色色的分隔线。

原文:Swift - 导航栏背景全透明效果的实现(沉浸式效果)

1

2

//设置导航栏背景为空图片

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)


(2)如果要去除这个黑边,同样将导航栏的 shadowImage 设置为一个空的 image 即可。

原文:Swift - 导航栏背景全透明效果的实现(沉浸式效果)

1

2

//设置导航栏阴影为空图片

self.navigationController?.navigationBar.shadowImage = UIImage()

 

2,完整样例

(1)我们在 viewWillAppear 方法中将导航栏背景设置为透明,同时在 viewWillDisappear 方法中又将其还原,这样保证导航栏透明这对当前页面有效,其他页面的导航栏不会变为透明。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

import UIKit

 

class ViewControllerUIViewController {

     

    override func viewDidLoad() {

        super.viewDidLoad()

         

        //修改导航栏标题文字颜色

        self.navigationController?.navigationBar.titleTextAttributes =

            [.foregroundColor: UIColor.white]

        //修改导航栏按钮颜色

        self.navigationController?.navigationBar.tintColor = UIColor.white

         

        //设置视图的背景图片(自动拉伸)

        self.view.layer.contents = UIImage(named:"bg1.jpg")!.cgImage

    }

     

    //视图将要显示

    override func viewWillAppear(_ animated: Bool) {

        super.viewWillAppear(animated)

         

        //设置导航栏背景透明

        self.navigationController?.navigationBar.setBackgroundImage(UIImage(),

                                                                    for: .default)

        self.navigationController?.navigationBar.shadowImage = UIImage()

    }

     

    //视图将要消失

    override func viewWillDisappear(_ animated: Bool) {

        super.viewWillDisappear(animated)

         

        //重置导航栏背景

        self.navigationController?.navigationBar.setBackgroundImage(nilfor: .default)

        self.navigationController?.navigationBar.shadowImage = nil

    }

}


(2)运行效果如下:

原文:Swift - 导航栏背景全透明效果的实现(沉浸式效果)


原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_2067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值