我有一个类似的问题,所以我开始研究,我找到了一个适合我的解决方案......我将展示我是如何做到的,但我不得不说我不使用故事板,所以一切都在代码中......
1) 你必须创建一个“UIView”类型的类,然后把这段代码放进去:
class ExtendedNavBarView: UIView {
override func willMove(toWindow newWindow: UIWindow?) {
super.willMove(toWindow: newWindow)
layer.shadowOffset = CGSize(width: 0, height: CGFloat(1) / UIScreen.main.scale)
layer.shadowRadius = 0
layer.shadowColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1).cgColor
layer.shadowOpacity = 0.25
}
2) 然后,转到您拥有 navigationController 的类。在 viewDidLoad 方法中,放上这段代码:
navBar.shadowImage = #imageLiteral(resourceName: "TransparentPixel")
let extendedBar = ExtendedNavBarView()
extendedBar.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: 82) //The height value is gonna determinate the total height of the navbar
view.addSubview(extendedBar)
extendedBar.backgroundColor = UIColor(red: 249/255, green: 249/255, blue: 249/255, alpha: 1.0)
基本上是导航栏的扩展视图,根据您输入的高度值,总导航栏会或多或少更高。
如果你想了解更多,你可以去这里:
Custom NavigationBar
另外,“TransparentPixel”图片在页面中,您只需下载示例项目即可。