我有以下代码:
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
是私有的,因此您无法在不迭代子视图并对其进行所有修改的情况下操纵它。这可能不是一个好主意。
出于好奇,我使用视图调试器查看了 iOS 10 中的消息应用程序,因为他们显然是这样做的。他们实际上通过添加自己的布局来实现布局UIButton
替换 back 和 rightBarButtonItem。这是您可以做的事情,但是他们还将内部(和私有)内容视图之一的 alpha 设置为零,以便原始内容不再可见。
不幸的是,这是你无法轻易做到的事情。您可以尝试破解一些东西,直到它起作用,但请记住您还需要处理通话状态栏中的推送/弹出、交互式转换和旋转事件。
然而,如果您不打算使用 iMessage 样式,而只是想在导航栏下方添加一些内容,为什么不考虑固定一个UIVisualEffectView
to the topLayoutGuide
在你的UIViewController
?您可以轻松获得相当漂亮的外观,并且可以节省很多黑客工作。这是一个例子:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)