在自己实现的项目中需要隐藏掉 UINavigtionBar 底部的实线, 并在底部添加一个外观一样的 UIView, 用来实现为 NavigationBar “增高”的功能. 之前在 iOS9 中使用的方法失效了. Google 了一下找到的通用的办法.
我们将这个功能写在 UINavigationController
的 extension 中. 首先利用简单的递归找到底部那条实线.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| extension UINavigationController { public func navigationBarLine(view: UIView) -> UIView? { if view.isKind(of: UIImageView.classForCoder()) && view.bounds.size.height <= 1.0 { return view } for view in view.subviews { if let imageView = navigationBarLine(view: view) { return imageView } } return nil } }
|
之后我们在 extension 中定义一个 navigationBarLine
的计算属性, 方便外部访问.
1 2 3
| public var navigationBarLine: UIImageView { return navigationBarLine(view: self.navigationBar) as! UIImageView }
|
OK! Done.
这样我们就可以在需要的时候直接访问 navigationBarLine
属性来将其隐藏了.