如何使用自定义视图获得与导航栏相同的尺寸?

时间:2018-10-12 03:15:56

标签: ios uiview

我需要使用自定义视图重新创建导航栏,因为比将视图从Apple插入到实际导航栏中要容易得多。 我需要插入搜索栏和一些按钮。

但是我在设置自定义导航栏视图的大小时遇到​​问题,在某些iOS设备中,它似乎比苹果的导航栏大一点,我设置了自动布局,如下图所示。将前导,尾随和顶部约束到超级视图,然后将宽高比设置为375:80

自定义视图是红色的。 orangeVC中的导航栏来自苹果,是使用导航控制器

https://phpspreadsheet.readthedocs.io/en/develop/

这是结果,对于iPhone XR,XSMax,它看起来很棒,尺寸看起来也一样。

enter image description here

但对于iPhone 8,自定义视图似乎更大 enter image description here

如何正确制作具有与Apple导航栏相同大小的自定义视图?

3 个答案:

答案 0 :(得分:1)

您从哪里获得375:80的比例? 这是不正确的。 默认情况下,NavigationBar的高度为44,对于iPhone X,XR,XS,XS Max和其他类型的Notch类型的设备,StatusBar的高度为44。

因此,对于Notch型设备,您需要将其设置为88;对于其他类型,您需要将其设置为64,而不是比率。祝你好运!

答案 1 :(得分:0)

不需要计算。

导航栏高度始终应该为44.0。 但是,Navbar顶部约束应使用安全区域代替超级视图。并添加状态栏背景视图以使其与标题颜色匹配

enter image description here

答案 2 :(得分:0)

到目前为止,我发现的最好方法是无需创建导航控制器实例:

[self.navigationBar sizeThatFits:CGSizeZero].height;