如何将导航栏的位置更改为顶部附加在swift 3中

Posted

技术标签:

【中文标题】如何将导航栏的位置更改为顶部附加在swift 3中【英文标题】:How to change barPosition of navigationBar to topAttached in swift3 【发布时间】:2017-01-05 12:01:37 【问题描述】:

我需要将 navController 的 navBar 的 barPosition 更改为 topAttached 类型。我尝试使用 UINavigationBarDelegate 的 position(for bar:) 方法。在 MyViewController 类中:

navigationController?.navigationBar.delegate = self

并在扩展中:

extension MyViewController: UINavigationBarDelegate
    func position(for bar: UIBarPositioning) -> UIBarPosition 
        return .topAttached
    

但它不起作用,因为

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在控制器管理的 UINavigationBar 上手动设置委托。”

那么这里还有其他方法可以在 swift 3 中更改 barPosition 吗?提前致谢!

【问题讨论】:

【参考方案1】:

NavigationBar.positionreadonly 属性。你不能改变它。如果你想改变导航栏的框架。首先更改 UINavigationController 的框架,然后将其插入。

例子:

如果你想向下移动它:

    self.navigationController?.view.frame = CGRect(x: 0.0, y: 100.0, width: 320.0, height: 426.0)
    self.navigationController?.navigationBar.frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 44.0)

【讨论】:

感谢您的回答!但我不需要更改导航栏的高度。我需要准确更改 positionBar,但使用相同的框架。因为当我移动 MyViewController(另一个控制器的哪个子视图)时,位置栏在 ios 10 中发生了变化,但它在 iOS 9 中正常工作

以上是关于如何将导航栏的位置更改为顶部附加在swift 3中的主要内容,如果未能解决你的问题,请参考以下文章

Timeline.js 如何将导航更改为顶部

如何在 Swift 的导航栏顶部显示自定义视图?

如何在swift 5中调整导航栏的位置?

如何在php中将面包屑导航栏的颜色从紫色更改为#d6df23

如何使工具栏附加到底部 iOS Swift

如何在 Swift 中更改 TabBar 的颜色?图像作为导航栏中的背景?