如何将UITabBarController与NavigationBar和ScrollView一起使用?

时间:2016-11-05 10:00:57

标签: ios swift uitabbarcontroller

我正在使用SLPagingView在我的 Swift 3 项目中拥有一个移动的NavigationBar。

enter image description here

控制器是SubClass UIViewControllerScrollView

我想使用UITabBarController作为嵌入式UIViewControllers之一。问题是,我的TabBar丢失了:

绿色控制器中的白条显示问题:

enter image description here

模拟器(iPhone 7 Plus)上的当前结果:

enter image description here

我猜TabBar + NavigationBar的大小中缺少StatusBar。在其他控制器中,我使用插入UITableViews。如何在当前情况下显示UITabBar?非常感谢帮助。

修改

作为当前的解决方案,我有"解决方案"将TabBar移动到所需位置。

class TabC: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let statusBarHeight = UIApplication.shared.statusBarFrame.height
        let screenSize: CGRect = UIScreen.main.bounds
        let tabBarFrame = CGRect(x: 0, y: (screenSize.height - 88 + statusBarHeight), width: screenSize.width, height: 0)

        self.tabBar.frame = tabBarFrame
    }
}

完美位置是NavigationBar2x 44 = 88)减去statusBarHeight的2倍。适用于iPhone 5S,6,7 Plus。每次都是同一个位置。

但为什么NavigationBar(减去statusBarHeight的2倍,这是最好的方法吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

注意:根据与问题所有者的对话,在答案之下。

来自帖子:完美位置是NavigationBar的2倍(2x 44 = 88)。适用于iPhone 5S,6,7 Plus。每次都是相同的位置。但为什么要两次使用NavigationBar?

SLPagingView栏是一个自定义UIView,其作用类似于滑动导航栏。来自tabBarController.you以编程方式隐藏状态栏..

<强>计算:

根据您的SLPagingView控制器,没有navigationBar(44)和tabBar(44),这使得2 x 44 = 88 ..

从tabBarController计算应该如下

 UIApplication.shared.statusBarFrame.height + UINavigationController().navigationBar.frame.height + UINavigationController().toolbar.frame.height + tailingSpace between the barView to tabBar(8 as he mentioned)