如何在iPhone X上获取tabBar的高度

时间:2018-11-11 10:49:19

标签: ios swift

我在ViewController上方添加tabBar

 cardViewController = storyboard?.instantiateViewController(withIdentifier: "CardViewController") as? CardViewController
    addChildViewController(cardViewController)
    cardViewController.didMove(toParentViewController: self)

    view.addSubview(cardViewController.view)

    cardViewController.view.frame = CGRect(x: 0, y: view.frame.height - cardHandlAreaHight - tabBarHight,
                                           width: view.bounds.width, height: cardHight)

    cardViewController.view.clipsToBounds = true

我得到的tabBar的大小是这样的:

tabBarHight = tabBarController?.tabBar.frame.size.height

这适用于所有iPhone,但不适用于iPhone X 如何解决这一刻?

enter image description here

2 个答案:

答案 0 :(得分:1)

您应该通过“自动布局”放置添加的视图,而不是设置框架。

但是,如果您确实需要处理像素大小,则可以通过

访问底部填充
view.safeAreaInsets.bottom

您还应该看看:https://stackoverflow.com/a/46831519/2133377

答案 1 :(得分:1)

在我的情况下,获得这一点的正确方法不是获得safeArea而是获得tabBarFrame这样的点

let topTapbarPosition = tabBarController?.tabBar.frame.minY

之后像这样使用它

cardViewController.view.frame = CGRect(x: 0, y: topTapbarPosion! - cardHeight!,

                                           width: view.bounds.width, height: cardHeight!)

在所有型号的iPhone上都可以正常工作