如何在iOS 7中使NavigationBar和StatusBar具有相同的背景?

qic*_*ren 2 uinavigationbar ios7 ios7-statusbar

我使用Xcode 5创建一个主细节项目.默认导航栏如下所示:

在此输入图像描述

现在我创建一个新的UIViewContrller文件及其xib文件:

在此输入图像描述

我在视图中添加了一个NavigationBar,并将背景颜色设置为绿色,但状态栏区域位于导航栏中.如何将其配置为MasterController导航栏显示?

在此输入图像描述

Jef*_*Sun 5

你有2个选择.

  1. 创建一个UINavigationViewController,并设置你的ViewController有UINavigationViewController的rootViewController(它将自动创建一个导航栏,其顶部有正确的状态栏颜色),

  2. 或者您可以保留您的navigationBar,将其Y原点设置为20,并执行以下操作:

在.h文件中:

@interface XYZViewController : UIViewController <UIBarPositioningDelegate>
Run Code Online (Sandbox Code Playgroud)

在.m文件中:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationBar.delegate = self;
}

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar { 
    return UIBarPositionTopAttached; 
}
Run Code Online (Sandbox Code Playgroud)

编辑:如何在手机横向模式下调整栏大小:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self.navigationBar sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)