我有以下代码:
func navbarbutton() {
UIView.animateWithDuration(0.2, animations: { () -> Void in
let current = self.navigationController?.navigationBar.frame
self.navigationController?.navigationBar.frame = CGRectMake(self.frame!.origin.x, self.frame!.origin.y, self.frame!.size.width, current!.size.height + 50)
self.navigationController?.navigationBar.layoutIfNeeded()
})
}
我能够将导航栏的高度增加 50 dp。那不是我的问题。我遇到的问题是 UIBarButtonItems
都与底部对齐。我怎样才能让它们与顶部对齐,以便我可以自己在底部添加更多内容?我得到了图片中的东西:
是否可以让它与顶部对齐?
最佳答案
很遗憾,您不能这样做。
UINavigationBar
中的 View 层次结构是私有(private)的,因此您无法在不遍历 subview 并对其进行所有操作的情况下操作它。这可能不是一个好主意。
出于好奇,我使用 View 调试器查看了 iOS 10 中的消息应用程序,因为它们显然是这样做的。他们实际上是通过添加自己的 UIButton
来替换 back 和 rightBarButtonItem 来实现布局的。这是您可以做的事情,但是他们还将内部(和私有(private))内容 View 之一的 alpha 设置为零,以便原始内容不再可见。
不幸的是,这是您无法轻易做到的事情。您可以尝试破解直到它起作用,但请记住,您还需要处理推送/弹出、调用状态栏、交互式转换和旋转事件。
如果您不喜欢 iMessage 风格,只是想在导航栏下方添加一些内容,为什么不考虑将 UIVisualEffectView
固定到 topLayoutGuide
在你的 UIViewController
中?您可以很容易地获得相当漂亮的外观,并且可以节省很多黑客攻击。这是一个例子:
关于ios - 增加 NavigationBar 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40316352/