Iphone X中Tabbar下方部分的高度

时间:2017-09-25 20:37:20

标签: ios swift user-interface tabbar iphone-x

希望有人可以帮我提高Iphone X中Tabbar下方的高度。我需要在iPhone X的一个框架尺寸中移除此高度。新的状态栏有不同的高度,我可以用以下参考高度:

UIApplication.shared.statusBarFrame.height

有谁知道我如何在Iphone X中引用Tabbar下方的高度?:

enter image description here

3 个答案:

答案 0 :(得分:4)

我认为这就是你要找的东西:

if #available(iOS 11.0, *) {
  print(view.safeAreaInsets.bottom)
}

这是因为iOS 11中引入了新的安全区域,并且会在iPhone X上提供您正在寻找的空间。但它会因设备而异。

答案 1 :(得分:2)

我不知道你为什么要隐藏这个指标。但是根据Apple建议的指导方针,我们提到不要用其他观点来覆盖这个空间/区域。

  

不要掩盖或特别注意关键显示功能。不要   试图隐藏设备的圆角,传感器外壳或   通过在黑色条上放置黑条访问主屏幕的指示器   屏幕的顶部和底部。不要使用像这样的视觉装饰品   括号,边框,形状或说明特殊的说明文字   关注这些领域。

链接 - Interface guidelines for iPhone-X

但是,如果您的要求是在横向模式下播放视频 您可以在播放时auto-hide指示。当用户在视频播放时触摸屏幕时,它将自动重新出现。

对于auto-hide,您可以override prefersHomeIndicatorAutoHidden分别ViewController

override func prefersHomeIndicatorAutoHidden() -> Bool {
        return true
    }

答案 2 :(得分:0)

要计算导航栏和标签栏之间的可用空间,您可以将其坐标转换为VC的视图空间,然后再减去。

我发现这比试图将所有可能影响安全的事情加在一起更容易。此外,它还具有在引入SafeAreaInset之前与iOS版本兼容的优势。

CGRect navBarFrame = [self.view convertRect:self.navigationController.navigationBar.bounds fromView:self.navigationController.navigationBar];
CGRect tabBarFrame = [self.view convertRect:self.tabBarController.tabBar.bounds fromView:self.tabBarController.tabBar];

return CGRectGetMinY(tabBarFrame) - CGRectGetMaxY(navBarFrame);