tabBar减小嵌套ViewController中视图的大小

时间:2018-08-30 19:56:03

标签: ios swift uitabbarcontroller uitabbar

我在UIViewControllerVC)的UIPageViewController中的UINavigationController中嵌套了UITabBarControllerUIViewController < UIPageViewController < UINavigationController < UITabBarController)。

由于我想将整个屏幕用于VC中的照片,因此边框也应覆盖整个屏幕。 UIImageView应作为子视图添加到我的view的{​​{1}}上,由于其他一些原因,我希望用户使用动画使VC消失( tabBar在我的navigationController?.setNavigationBarHidden(true, animated: animated)中用于隐藏导航栏)。对于我来说,通过动画隐藏UIPageViewController似乎有点困难:

当我使用动画隐藏条形图时,我注意到tabBar中的view被制表符栏的高度切断了。我很好奇栏上方是哪个视图,并在父视图中与VCbackgroundColors一起使用了UINavigationController,并设法找出这是UIPageViewController。在上一个项目中,我使用了UINavigationController,它现在做了我想要的。我尝试在单个控制器和多个控制器中同时使用它。到目前为止没有任何工作。

要获取我使用过的视图edgesForExtendedLayout = []的高度(它比应该的要小),我设法使用viewDidLayoutSubviews对其进行校正(viewWillLayoutSubviews告诉我它的高度等于print)。尽管如此,它还是不可见,因此很可能被UIScreen.main.bounds.height截断了。

有人知道原因是什么,如何解决?感谢您的帮助!

编辑: 还尝试将UINavigationController设置为彼此相等(VC = PageVC,而PageVC = NavigationVC)也没有完成。调试视图层次结构表明view.frameVC.view仍被切断。

1 个答案:

答案 0 :(得分:0)

老实说,我没有尝试按照第一条评论中的建议将其设置为半透明,因为我真的想保持其不透明。我确实做到了,尽管以一种不太优雅的方式。因此,这里是我的问题的解决方案:

回想一下,make menuconfig 是通过以下方式嵌套的:VC。我在其中的每一个中都尝试过UIViewController < UIPageViewController < UINavigationController < UITabBarController,即使是组合也都没有用。但是,在一个旧项目中,我在edgesForExtendedLayout = []VC之间放置了一个额外的PageVC,实际上将视图的顺序更改为:NavVC。在此附加控制器中设置UIViewController < AdditionalUIViewController < UIPageViewController < UINavigationController < UITabBarController可以解决此问题。

我很高兴问题解决了。但是,我仍然无法确定问题发生的原因。如果有人有想法,我会很高兴听到!