现在在 iOS 11 中,sizeThatFits
方法不是从调用的UINavigationBar
子类。改变框架UINavigationBar
导致故障和错误的插入。
那么,现在有什么想法如何自定义导航栏高度吗?
根据苹果开发者的说法(看here, here and here),不支持在 iOS 11 中更改导航栏高度。Here他们建议采取解决方法,例如在导航栏下方(但在其外部)查看视图,然后删除导航栏边框。结果,您将在故事板中看到以下内容:
在设备上看起来像这样:
现在您可以执行其他答案中建议的解决方法:创建一个自定义子类UINavigationBar
,将您的自定义大子视图添加到其中,覆盖sizeThatFits
and layoutSubviews
,然后设置additionalSafeAreaInsets.top
导航顶部控制器的区别customHeight - 44px
,但栏视图仍将是默认的 44px,尽管视觉上一切看起来都很完美。我没有尝试覆盖setFrame
,也许它有效,但是,正如苹果开发人员在上面的链接之一中所写的那样:“......并且也不[支持]更改 UINavigationController 拥有的导航栏的框架(只要导航控制器认为合适,它就会很高兴地踩踏您的框架更改)。”
就我而言,上述解决方法使视图看起来像这样(调试视图以显示边框):
可以看到,视觉效果相当不错,additionalSafeAreaInsets
正确地将内容向下推,大导航栏可见,但是我在此栏中有一个自定义按钮,并且只有标准 44 像素导航栏下方的区域是可单击的(图像中的绿色区域)。低于标准导航栏高度的触摸不会到达我的自定义子视图,因此我需要调整导航栏本身的大小,苹果开发人员表示不支持这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)