用 clipsToBounds 隐藏 NavigationBar 边框/阴影会在 Swift 中丢失状态栏?

Posted

技术标签:

【中文标题】用 clipsToBounds 隐藏 NavigationBar 边框/阴影会在 Swift 中丢失状态栏?【英文标题】:Hiding NavigationBar border/shadow with clipsToBounds loses status bar in Swift? 【发布时间】:2015-06-18 04:59:55 【问题描述】:

所以我一直在拼命尝试隐藏导航栏底部边框/阴影。我已经完成了所有我能得到的 SO 答案,但没有一个是正确的。

将 navBar 背景和阴影图像设置为空 uiimage 什么都不做:

    navigationController?.navigationBar.setBackgroundImage(UIImage(named: ""), forBarPosition: UIBarPosition.Any, barMetrics: UIBarMetrics.Default)
    navigationController?.navigationBar.shadowImage = UIImage(named: "")

设置 clipsToBounds 或 maskToBounds = true 有效,但我失去了顶部的状态栏,当使用相同的 navController 推送到下一个 VC 时,我得到一个黑色的状态栏。

navigationController?.navigationBar.layer.masksToBounds = true

navigationController?.navigationBar.clipsToBounds = true 

在 appDelegate 中的设置也不起作用:

 UINavigationBar.appearance().backIndicatorImage = UIImage(named: "")
 UINavigationBar.appearance().shadowImage = UIImage(named: "")

我在 ios 8 上使用 Swift。感谢您提供任何其他建议!

【问题讨论】:

是的,我也试过了,还是不行。 【参考方案1】:
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)

【讨论】:

以上是关于用 clipsToBounds 隐藏 NavigationBar 边框/阴影会在 Swift 中丢失状态栏?的主要内容,如果未能解决你的问题,请参考以下文章

Android 更改导航栏颜色及隐藏导航栏

Android 更改导航栏颜色及隐藏导航栏

iOS隐藏导航栏底部的线条& UINavigationBar小技巧

“隐藏”具有自动布局子视图的 UIView

clipsToBounds 是如何工作的?

clipsToBounds 与 masksToBounds 的区别与联系