如何隐藏iOS7 UINavigationBar 1px底线

如何隐藏iOS7 UINavigationBar 1px底线,第1张

概述我有一个应用程序,有时需要其导航栏与内容融合。 有谁知道如何摆脱或改变这个讨厌的小酒吧的颜色吗? 在下面的情况下,我有 – 我说的这个1px高度线下面“根视图控制器” 为此,您应该设置自定义阴影图像。但是对于要显示的阴影图像,您还需要设置自定义背景图片,引用从苹果的文档: For a custom shadow image to be shown, a custom background imag 我有一个应用程序,有时需要其导航栏与内容融合。

有谁知道如何摆脱或改变这个讨厌的小酒吧的颜色吗?

在下面的情况下,我有 – 我说的这个1px高度线下面“根视图控制器”

解决方法 为此,您应该设置自定义阴影图像。但是对于要显示的阴影图像,您还需要设置自定义背景图片,引用从苹果的文档:

For a custom shadow image to be shown,a custom background image must
also be set with the setBackgroundImage(_:for:) method. If the default
background image is used,then the default shadow image will be used
regardless of the value of this property.

所以代码是:

let navigationbar = navigationController!.navigationbarnavigationbar.setBackgroundImage(UIImage(named: "barBackground"),forbarMetrics: .Default)navigationbar.shadowImage = UIImage()

以上是唯一的“官方”的方式来隐藏它。不幸的是,它消除了酒吧的半透明。

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

您有以下选项:

>创建用颜色填充的微小背景图片并使用它。
>将背景图像设置为UIImage(),然后将backgroundcolor设置为您喜欢的颜色。不幸的是,它使状态栏未填充在最新的iOS版本…

navigationbar.setBackgroundImage(UIImage(),forbarMetrics: .Default)navigationbar.backgroundcolor = UIcolor.redcolor()

>使用下面描述的’Hacky’方法。它也将保持栏半透明。

如何保持栏半透明?

要保持半透明,你需要另一种方法,它看起来像一个黑客,但工作良好。我们试图删除的阴影是一个细长的UIImageVIEw UINavigationbar下的地方。我们可以找到它,隐藏/显示它在需要时。

下面的说明假设你只需要在你的UINavigationController层次结构的一个控制器中隐藏发线。

>声明实例变量:

private var shadowImageVIEw: UIImageVIEw?

>添加方法找到这个阴影(发际)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}

>添加/编辑vIEwWillAppear / vIEwWilldisappear方法:

overrIDe func vIEwWillAppear(_ animated: Bool) {    super.vIEwWillAppear(animated)    if shadowImageVIEw == nil {        shadowImageVIEw = findShadowImage(under: navigationController!.navigationbar)    }    shadowImageVIEw?.hIDden = true}overrIDe func vIEwWilldisappear(_ animated: Bool) {    super.vIEwWilldisappear(animated)    shadowImageVIEw?.hIDden = false}

同样的方法也应该对UISearchbar发线有效,
和(几乎)任何你需要隐藏的东西;

非常感谢@Leo Natan的原创想法!

总结

以上是内存溢出为你收集整理的如何隐藏iOS7 UINavigationBar 1px底线全部内容,希望文章能够帮你解决如何隐藏iOS7 UINavigationBar 1px底线所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存