在我的应用程序中,我有一个UITabBarController作为根视图。我有一个两步骤的模态视图,将使用导航控制器进行导航。当我将UINavigationController作为UITabBarController的子级添加时,我的导航控制器底部留下了一个选项卡大小的间隙。请参见附加的图像(抱歉丑陋,仅供演示)。
在这张图片中,底部的白色条是选项卡栏,蓝色背景是当前选定选项卡的视图控制器。黄色是导航控制器中包含的视图控制器。红色间隔是添加导航控制器作为选项卡栏控制器的子控制器时创建的间隙。
如果我在应用程序代理中将导航控制器设置为根视图控制器,则它会正确显示,没有底部的间隙。这是选项卡栏和导航控制器之间交互的错误吗?还是我可以做些什么来防止这种情况发生?
只有当选项卡栏设置为不透明时才会发生这种情况。对于导航控制器的扩展布局边缘并没有影响。似乎无论我做什么,都会留下这个间隙,我不能对其进行太多操作。
我以一种非常简单的方式添加了导航控制器:
addChildViewController(navigationController)
view.addSubview(navigationController.view)
navigationController.view.setTranslatesAutoresizingMaskIntoConstraints(false)
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[view]-20-|", options: nil, metrics: nil, views: ["view" : navigationController.view]))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-100-[view]-100-|", options: nil, metrics: nil, views: ["view" : navigationController.view]))
如果我在应用程序代理中将导航控制器设置为根视图控制器,则它会正确显示,没有底部的间隙。这是选项卡栏和导航控制器之间交互的错误吗?还是我可以做些什么来防止这种情况发生?