如何覆盖iOS7中具有UITabBarController和UITableViewController的状态栏

时间:2013-11-22 08:04:36

标签: ios objective-c uitableview ios7 storyboard

简介: 我面临的根本问题是iOS7如UINavigationController所描述的那样处理UITabBarViewController状态栏的方式here (斜体引用,粗体的重要部分):

从iOS 7视图控制器开始全屏显示,默认情况下,如图1所示。这意味着它们将覆盖整个屏幕,包括状态栏下方的区域。

Figure 1  Full screen view controller underneath the status bar 图1 状态栏下方的全屏视图控制器

enter image description here 图2 显示状态栏下方的视图,类似于iOS 7之前的行为。

使用不透明UINavigationController或UITabBarController的应用程序会自动将其内容保留在状态栏下方。

问题:我的根控制器视图是UINavigationController ..其中一个视图控制器是UITableView,而UITabBarViewController又有一个{{1}} RootViewController的。这种关系如下所示:

enter image description here

运行此操作,状态栏显示为白色:

enter image description here

而不是其他视图控制器(没有navbar + tableview):

enter image description here

基于上面的粗体引用..这非常有意义..因为iOS7暴力迫使uinavbar及其状态栏下方的所有子视图..

通常我解决这个问题的方式(我已经阅读了很多关于这个问题的答案)是通过让我的rootviewcontroller有一个包含颜色(在这种情况下是红色)的视图,我希望在状态下显示-bars在上面的页面中..但是当我的rootViewController是{{1}}时,我不知道该怎么做?

1 个答案:

答案 0 :(得分:0)

在尝试各种解决方案之后......我发现继承UINavBar并覆盖其layoutSubviews来拉伸它的高度解决了这个问题:

- (void)layoutSubviews {
    self.frame = CGRectMake(0, 0, 320, 64);
}