美文网首页
隐藏导航栏下方0.5像素高度的黑线

隐藏导航栏下方0.5像素高度的黑线

作者: 华子的学习之路 | 来源:发表于2017-09-06 23:13 被阅读38次

    首先我们需要弄明白这条黑线是什么?

    iOS 8.3 结构图 iOS 8.3 打印图 iOS 10.3 结构图 iOS 10.3 打印图

    就如上图所示, 知道了黑线是什么, 接下来的处理就简单了, 但是由于iOS 8.3 与iOS 10.3版本之间控件的层次关系还是有些许差别的, 所以处理的时候需要注意一下, 至于控件层级哪个版本发生的改变, 由于我电脑上没安装一系列的模拟器, 所以暂时不确定, 推测是10.0之后(个人猜测, 未验证).

    方法一: 找到黑线, 将其隐藏, 代码如下

    // 页面将要出现时
    override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         // 设置导航栏底部黑色线(0.5px)隐藏
         for subview in navigationController!.navigationBar.subviews[0].subviews {
              if subview.isKind(of: UIImageView.self) {
                   subview.isHidden = true
              }
         }
    }
    
    // 页面将要消失时, 修改回来
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        for subview in navigationController!.navigationBar.subviews[0].subviews {
             if subview.isKind(of: UIImageView.self) {
                  subview.isHidden = false
             }
        }
    }
    
    

    方法二:重置navigationController的navigationBar的backgroundImage和shadowImage, 代码如下:

    // 下面的UIImage()需要带有半透明效果的一张图片, 由于我没有, 就暂时没设置
    //如果像下面一样, 只是赋值一个没有真实图片的UIImage对象, 会发现导航栏已经完全透明了.
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    
    注意:单独设置shadowImage而backgroundImage仍然使用默认值, shadowImage设置无效的, 依然是默认值, 只有当两者同时改变才可以起作用.

    相关文章

      网友评论

          本文标题: 隐藏导航栏下方0.5像素高度的黑线

          本文链接:https://www.haomeiwen.com/subject/kqnvjxtx.html