【问题标题】:Height of Navigation Bar in swift 4swift 4中导航栏的高度
【发布时间】:2017-09-23 22:27:20
【问题描述】:

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

【问题讨论】:

  • 这在 Swift 3 和 4 之间没有区别。这可能是 iOS 11 的变化。语言无关。
  • 即使在情节提要上,当我尝试更改高度时,它也不会反映在视图中。在 Xcode 8 中,它运行良好。
  • 相信跟iPhone x的推出有关

标签: ios swift uinavigationbar swift4


【解决方案1】:

我有一个类似的问题,所以我开始研究,我找到了一个适合我的解决方案......我将展示我是如何做到的,但我不得不说我不使用故事板,所以一切都在代码中......

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”图片在页面中,您只需下载示例项目即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2015-11-15
    • 2017-09-19
    • 2017-04-06
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多