2017-09-23 133 views
2

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

+1

这不是Swift 3和4之间的区别。这可能是iOS 11的变化。该语言无关紧要。 – rmaddy

+0

即使在故事板上,当我尝试更改高度时,它也不会反映在视图中。在Xcode 8中,它完美运行。 – Nevin

+0

我相信这与iPhone x的推出有关 – OverD

回答

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)然后,转到类你有你的导航控制器。在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) 

基本上是用于的导航栏的扩展视图,这取决于你把高度值,总的Navbar是要去或多或少高。

如果您想了解更多相关信息,您可以去这里: Custom NavigationBar

此外,“TransparentPixel”的形象是在页面中,你只需要下载示例项目。