如何隐藏UINavigationBar 1 px底线我有一个应用程序,有时需要它的导航栏,以融入内容。有人知道如何摆脱或改变这个讨厌的小酒吧的颜色吗?在下面的图片中,我说的是“根视图控制器”下面的1 px高度线。
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
对于要显示的自定义阴影图像,还必须使用setBackoundImage(_:for:)方法设置自定义背景图像。如果使用默认背景图像,则不管此属性的值如何,都将使用默认阴影图像。
let navigationBar = navigationController!.navigationBar navigationBar.setBackgroundImage(#imageLiteral(resourceName: "BarBackground"), for: .default)navigationBar.shadowImage = UIImage()
以上是唯一的“官方”方式来隐藏它。不幸的是,它消除了酒吧的半透明。
我不想要背景图像,只想要颜色
纯色,无半透明: navigationBar.barTintColor = UIColor.redColor()navigationBar.isTranslucent = falsenavigationBar.setBackgroundImage(UIImage(), for: .default)navigationBar.shadowImage = UIImage()
创建充满颜色的小背景图像并使用它。 使用下面描述的‘hacky’方法。它还将保持酒吧半透明。
如何保持酒吧的半透明?
UIImageView
UINavigationBar
UINavigationController
声明实例变量: private var shadowImageView: UIImageView?
查找此阴影(发际线)的Add方法 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?.isHidden = true}override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) shadowImageView?.isHidden = false}
UISearchBar
非常感谢“狮子座娜丹”这个创意!
冉冉说
TA贡献1877条经验 获得超1个赞
AppDelegate
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
- 3 回答
- 0 关注
- 722 浏览
添加回答
举报
0/150
提交
取消