我在 iOS 7 中遇到了导航控制器及其根视图控制器的奇怪行为。目标是使用像 MMDrawerController ( http://github.com/mutualmobile/MMDrawerController/ ) 或 ECSlidingViewController ( http://github .com/edgecase/ECSlidingViewController)。
对于他们两个,我的中心主视图都有一个底部间隙问题(如屏幕截图所示)。在这两种情况下,我都使用“storyboard instantiateViewControllerWithIdentifier”来检索我的控制器,所以我认为问题来自这里。
导航控制器框架(中心主视图)没问题。但是这个导航控制器的根视图控制器得到了错误的帧高度......
在 iOS6 和 Xcode4 中一切都很好,问题出现在 iOS7 和 Xcode5 中。我已经修复了所有应用程序的“扩展边缘”,只有这个导航控制器有这个问题......
经过更多调查,似乎问题在于 uitabbar 的高度被删除了两次:
1 - ECSlidingViewController 去掉 uitabbar 高度来计算自己的高度
2 - ECSlidingViewController 加载导航控制器作为中心主视图及其框架
3 - 导航控制器加载其根视图控制器
4 - 根视图控制器再次删除 uitabbar 高度以计算其高度
所以根视图控制器得到“窗口大小 - uitabbar 高度 - uitabbar 高度”。这就是为什么uitabbar的大小有差距...
现在我需要找出为什么会出现这种行为,以及如何摆脱它......如果您对这个问题有任何想法,请提前致谢!