ios - swift 4中导航栏的高度

标签 ios swift uinavigationbar swift4

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

最佳答案

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

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 的扩展 View ,根据您在高度中输入的值,整个导航栏会或多或少变高。

如果你想了解更多,可以到这里: Custom NavigationBar

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

关于ios - swift 4中导航栏的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46384817/

相关文章:

ios - 复制和粘贴 ViewController 时 Xcode 崩溃

ios - iOS 启动图像的动画

ios - 向 Stripe 提交付款请求时出现“没有此类 token ”错误

swift - 同时移动所有矩形的点

iphone - UIBarButtonItem 大小不同

ios - 在 CAMediaTimingFunction 的特定时间获取百分比?

Swift 如何从条件绑定(bind)必须具有可选类型的 do catch 返回元组?

Swift - 在协议(protocol)/委托(delegate)之间传递数据时出错(未找到)

iphone - 在没有 UInavigationController 的情况下将 UIBarButtonItem 添加到 UINavigation 栏

objective-c - 弹出 View 时自定义导航栏背景不会恢复