快速4中导航栏的高度

时间:2017-09-23 22:27:20

标签: ios swift uinavigationbar swift4

在swift 3中,我能够使用约束并简单地设置高度来更改自定义导航栏的高度。现在我不能再那样做了。它实际上并没有改变故事板中导航栏的高度。即使我去大小检查员,高度字段是灰色的,我无法改变它。如果我以模态方式呈现视图并想要显示导航栏,最佳做法是什么?它不会自动显示,因为它是模态偏移。

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,所以我开始研究,我找到了一个适合我的解决方案......我会告诉我是怎么做的,但我不得不说我不使用故事板,所以这完全是代码......

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)

基本上是navigationBar的扩展视图,根据你在高度中放置的值,总导航栏会或多或少更高。

如果您想了解更多相关信息,可以访问: Custom NavigationBar

此外,“TransparentPixel”图像位于页面中,您只需下载示例项目。