• [Swift]完全透明沉浸式导航栏


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/11096580.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    1,实现原理 

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

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

    1 //设置导航栏阴影为空图片
    2 self.navigationController?.navigationBar.shadowImage = UIImage()

    2,举例

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

     1 import UIKit
     2  
     3 class ViewController: UIViewController {
     4      
     5     override func viewDidLoad() {
     6         super.viewDidLoad()
     7          
     8         //修改导航栏标题文字颜色
     9         self.navigationController?.navigationBar.titleTextAttributes =
    10             [.foregroundColor: UIColor.white]
    11         //修改导航栏按钮颜色
    12         self.navigationController?.navigationBar.tintColor = UIColor.white
    13          
    14         //设置视图的背景图片(自动拉伸)
    15         self.view.layer.contents = UIImage(named:"bg1.jpg")!.cgImage
    16     }
    17      
    18     //视图将要显示
    19     override func viewWillAppear(_ animated: Bool) {
    20         super.viewWillAppear(animated)
    21          
    22         //设置导航栏背景透明
    23         self.navigationController?.navigationBar.setBackgroundImage(UIImage(),
    24                                                                     for: .default)
    25         self.navigationController?.navigationBar.shadowImage = UIImage()
    26     }
    27      
    28     //视图将要消失
    29     override func viewWillDisappear(_ animated: Bool) {
    30         super.viewWillDisappear(animated)
    31          
    32         //重置导航栏背景
    33         self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    34         self.navigationController?.navigationBar.shadowImage = nil
    35     }
    36 }
  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/strengthen/p/11096580.html
Copyright © 2020-2023  润新知