在我的iOS应用程序中,我的窗口的rootViewController是一个标签栏控制器,其层次结构如下:
当用户点击某一行时FirstContentController,一个实例SecondController将被推送到其导航控制器上.SecondContentController将hidesBottomBarWhenPushed要YES在其init方法和套self.navigationController.toolbarHidden来NO的viewWillAppear:.
在iOS 6中,用户将挖掘该行FirstController并SecondController会得到推到导航控制器.因为它已hidesBottomBarWhenPushed设置,它将隐藏标签栏,并且在转换动画完成时,SecondController它将在屏幕上显示其工具栏.
但是,在iOS 7下进行测试时,其hidesBottomBarWhenPushed行为似乎已发生变化.我现在看到的是:
差距完全无法使用 - 它不响应触摸,如果我clipsToBounds在主视图上设置为YES,则没有任何内容.经过大量的调试和检查子视图层次结构后,看起来iOS的自动调整机制将视图控制器的视图调整为高度411(在iPhone 5上).应该是460到达工具栏,但布局系统似乎包括一个"鬼"49像素高的标签栏.
如果视图控制器的标签栏控制器为其父容器,则只会出现此问题.
在iOS 7上,当按下新控制器时,如何使标签栏消失并且工具栏无缝滑动到位,并且视图还占用导航项和工具栏之间的整个空间?
UPDATE
经过进一步调查后,只有在SecondController edgesForExtendedLayout设置为时才会发生这种情况UIRectEdgeNone.但是,除非我将该属性设置为,否则UIRectEdgeNone视图的框架太长并且在工具栏下方延伸,在该工具栏中无法看到或与之交互.