我有一个仅支持 ios7+ 的应用程序 导航栏设置使用状态栏下方显示的新 64 像素高栏。这是应用程序启动时的样子:
如果我执行任何类型的“presentViewController”,当我关闭视图时,导航栏会移回 44px 高度,并且仍然出现在状态栏下方,这反过来又会使视图的所有内容也向上移动。看起来是这样的:
不管我是呈现我自己的视图还是只是呈现 UIImagePickerView,任何通过导航控制器的向上滑动模式都会破坏导航栏设置。有想法该怎么解决这个吗?
几点注意事项:
- 在 plist 中:“查看基于控制器的状态栏外观”设置为“否”
- 导航栏配置为 self.navController.navigationBar.translucent = NO;
- 我正在使用 .xib 而不是故事板
更新:
我在 PKRevealController ( https://github.com/pkluz/PKRevealController ) 中有导航控制器。取出显示控制器并将导航控制器添加到窗口本身就可以解决问题......为什么显示控制器会导致它的行为不同?
解决方案:
原来是 PKRevealController 库导致了这个问题。我重新设计了它在 AppDelegate 中的设置方式并解决了问题,尽管它有点“hacky”。我将我的“之前”和“之后”配置放在下面:
初始设置是:
- 配置 PKRevealController
- 配置 NavController 并添加 rootView
- 设置 pkreveal 前视图 = navController
- 将显示控制器添加到窗口作为 Windows 根视图
解决方法是
- 创建一个包含 NavController
- 执行上述步骤 1-3
- 将 pkrevealcontroller 添加到包含的 navController
- 将包含导航控制器导航栏的设置为隐藏
- 将包含导航控制器添加到窗口作为根视图