【问题标题】:how to get the same size like navigation bar using custom view?如何使用自定义视图获得与导航栏相同的大小?
【发布时间】:2018-10-12 03:15:55
【问题描述】:

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

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

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

这是结果,对于 iPhone XR、XSMax,它看起来很棒,尺寸似乎相同。

但对于 iPhone 8,自定义视图似乎稍大一些

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

【问题讨论】:

标签: ios uiview


【解决方案1】:

您从哪里获得 375:80 的比例? 这是不正确的。 NavigationBar 的高度默认为 44,对于 iPhone X、XR、XS、XS Max 等 Notch 类型的设备,StatusBar 为 44,否则为 20。

因此您需要为 Notch 类型的设备设置 88,否则为 64 而不是比率。祝你好运!

【讨论】:

    【解决方案2】:

    什么都不需要计算。

    导航栏高度应始终为 44.0。 但是,导航栏顶部约束应该使用 Safe Area 代替 superview。并添加一个状态栏背景视图以匹配您的标题颜色

    【讨论】:

      【解决方案3】:

      目前我发现的最佳方法,无需创建导航控制器实例:

      [self.navigationBar sizeThatFits:CGSizeZero].height;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        相关资源
        最近更新 更多