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

问题描述 投票:0回答:1

我有一个UIViewControllerVC)在UIPageViewControllerUINavigationController)的UITabBarController中嵌套在UIViewController < UIPageViewController < UINavigationController < UITabBarController

由于我想在整个屏幕上使用我的VC中的照片,所以框架也应该覆盖整个屏幕。一个UIImageView将被添加为我的viewVC的子视图,并且由于其他几个原因,我希望用户使用动画使tabBar消失(navigationController?.setNavigationBarHidden(true, animated: animated)用于我的UIPageViewController隐藏导航栏)。然而,在我的情况下,通过动画隐藏tabBar似乎有点困难:

当我使用动画隐藏栏时,我注意到view中的VC被标签栏的高度切断。我很好奇是什么视图在酒吧上方,并在父母的观点中与backgroundColors一起玩,即UINavigationControllerUIPageViewController,并设法发现这是UINavigationController。在之前的项目中,我使用了edgesForExtendedLayout = [],它完成了我现在想要的。我曾尝试在个人控制器和许多控制器中同时使用它。到目前为止,没有任何工作。

为了获得视图的高度,我使用viewDidLayoutSubviews(它比它应该的小)并且我设法使用viewWillLayoutSubviews来纠正它(print告诉我它的高度等于UIScreen.main.bounds.height)。尽管如此,它是不可见的,因此可能被(显然)UINavigationController修剪。

有谁知道导致问题的原因以及如何解决问题?我很感激你的帮助!

编辑:还尝试将view.frames设置为彼此相等(VC's = PageVC's和PageVC's = NavigationVC's)也没有完成任务。调试视图层次结构表明VC.viewPageVC.view仍然被切断。

ios swift uitabbarcontroller uitabbar
1个回答
0
投票

老实说,我并没有像第一条评论中提出的那样尝试将其设置为半透明,因为我真的想让它保持不透明。我确实设法做到了,尽管方式不那么优雅。所以这里解决了我的问题:

回想一下VCs以下列方式嵌套:UIViewController < UIPageViewController < UINavigationController < UITabBarController。我在每一个中尝试过edgesForExtendedLayout = [],甚至组合,但没有一个工作。然而,在一个旧的项目中,我在VCPageVC之间添加了额外的NavVC,基本上将视图的顺序改为:UIViewController < AdditionalUIViewController < UIPageViewController < UINavigationController < UITabBarController。在这个附加控制器中设置edgesForExtendedLayout = []修复它。

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

© www.soinside.com 2019 - 2024. All rights reserved.