我在UIViewController
(VC
)的UIPageViewController
中的UINavigationController
中嵌套了UITabBarController
(UIViewController < UIPageViewController < UINavigationController < UITabBarController
)。
由于我想将整个屏幕用于VC
中的照片,因此边框也应覆盖整个屏幕。 UIImageView
应作为子视图添加到我的view
的{{1}}上,由于其他一些原因,我希望用户使用动画使VC
消失( tabBar
在我的navigationController?.setNavigationBarHidden(true, animated: animated)
中用于隐藏导航栏)。对于我来说,通过动画隐藏UIPageViewController
似乎有点困难:
当我使用动画隐藏条形图时,我注意到tabBar
中的view
被制表符栏的高度切断了。我很好奇栏上方是哪个视图,并在父视图中与VC
和backgroundColors
一起使用了UINavigationController
,并设法找出这是UIPageViewController
。在上一个项目中,我使用了UINavigationController
,它现在做了我想要的。我尝试在单个控制器和多个控制器中同时使用它。到目前为止没有任何工作。
要获取我使用过的视图edgesForExtendedLayout = []
的高度(它比应该的要小),我设法使用viewDidLayoutSubviews
对其进行校正(viewWillLayoutSubviews
告诉我它的高度等于print
)。尽管如此,它还是不可见,因此很可能被UIScreen.main.bounds.height
截断了。
有人知道原因是什么,如何解决?感谢您的帮助!
编辑:
还尝试将UINavigationController
设置为彼此相等(VC = PageVC,而PageVC = NavigationVC)也没有完成。调试视图层次结构表明view.frame
和VC.view
仍被切断。
答案 0 :(得分:0)
老实说,我没有尝试按照第一条评论中的建议将其设置为半透明,因为我真的想保持其不透明。我确实做到了,尽管以一种不太优雅的方式。因此,这里是我的问题的解决方案:
回想一下,make menuconfig
是通过以下方式嵌套的:VC
。我在其中的每一个中都尝试过UIViewController < UIPageViewController < UINavigationController < UITabBarController
,即使是组合也都没有用。但是,在一个旧项目中,我在edgesForExtendedLayout = []
和VC
之间放置了一个额外的PageVC
,实际上将视图的顺序更改为:NavVC
。在此附加控制器中设置UIViewController < AdditionalUIViewController < UIPageViewController < UINavigationController < UITabBarController
可以解决此问题。
我很高兴问题解决了。但是,我仍然无法确定问题发生的原因。如果有人有想法,我会很高兴听到!