如何将导航栏的位置更改为顶部附加在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.position
是 readonly
属性。你不能改变它。如果你想改变导航栏的框架。首先更改 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中的主要内容,如果未能解决你的问题,请参考以下文章