栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何隐藏UINavigationBar 1px底线

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何隐藏UINavigationBar 1px底线

对于iOS 13:

使用

.shadowColor
物业

如果此属性为nil或包含纯色,则该条不显示阴影

例如:

    let navigationBar = navigationController?.navigationBar    let navigationBarAppearence = UINavigationBarAppearance()    navigationBarAppearence.shadowColor = .clear    navigationBar?.scrollEdgeAppearance = navigationBarAppearence

对于iOS 12及以下版本:

为此,您应该设置自定义阴影图像。但是要显示阴影图像,您还需要设置自定义背景图像,请引用Apple文档中的内容:

为了显示自定义阴影图像,还必须使用setBackgroundImage(_:for
:)方法设置自定义背景图像。如果使用默认背景图像,则无论此属性的值如何,都将使用默认阴影图像。

所以:

    let navigationBar = navigationController!.navigationBar    navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"),     for: .default)    navigationBar.shadowImage = UIImage()

上面是隐藏它的唯一“官方”方式。 不幸的是,它消除了bar的半透明性。

我不想要背景图片,只想要颜色

您有以下选择:

  1. 纯色,无半透明:
        navigationBar.barTintColor = UIColor.redColor()    navigationBar.isTranslucent = false    navigationBar.setBackgroundImage(UIImage(), for: .default)    navigationBar.shadowImage = UIImage()
  1. 创建充满色彩的小背景图像并使用它。

  2. 使用下面描述的“ hacky”方法。它还将使条保持半透明。

如何保持酒吧半透明?

为了保持透明度,您需要另一种方法,它看起来像hack,但效果很好。我们要消除的阴影是

UIImageView
下方的细线
UINavigationBar
。我们可以找到它,并在需要时隐藏/显示它。

以下说明假定您仅需要将发际线隐藏在

UINavigationController
层次结构的一个控制器中。

  1. 声明实例变量:

    private var shadowImageView: UIImageView?
  2. 添加找到该阴影的方法(细线)

    UIImageView:

        private func findShadowImage(under view: UIView) -> UIImageView? {        if view is UIImageView && view.bounds.size.height <= 1 { return (view as! UIImageView)        }        for subview in view.subviews { if let imageView = findShadowImage(under: subview) {     return imageView }        }        return nil    }
  1. 添加/编辑
    viewWillAppear/viewWillDisappear
    方法:
        override func viewWillAppear(_ animated: Bool) {        super.viewWillAppear(animated)        if shadowImageView == nil { shadowImageView = findShadowImage(under: navigationController!.navigationBar)        }        shadowImageView?.isHidden = true    }    override func viewWillDisappear(_ animated: Bool) {        super.viewWillDisappear(animated)        shadowImageView?.isHidden = false    }

相同的方法也适用于

UISearchBar
发际线,以及(几乎)您需要隐藏的其他所有东西:)

非常感谢@Leo Natan的初衷!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号