Objective c 在iOS7中隐藏状态栏

Objective c 在iOS7中隐藏状态栏,objective-c,xcode,ios7,Objective C,Xcode,Ios7,我需要隐藏iOS7上的状态栏。我已经尝试设置: Status bar is initially hidden 及 进入plist文件。启动应用程序时,状态栏不会显示,但当我更改视图控制器(是选项卡式应用程序)时,状态栏会显示 我已经试过了 - (BOOL)prefersStatusBarHidden { return YES; } 及 在视图控制器中,但不起作用。有什么想法吗 提前感谢:) 更新 我通过在info.plist中将“基于视图控制器的状态栏外观”设置为“是”并调用该方法,

我需要隐藏iOS7上的状态栏。我已经尝试设置:

Status bar is initially hidden

进入plist文件。启动应用程序时,状态栏不会显示,但当我更改视图控制器(是选项卡式应用程序)时,状态栏会显示

我已经试过了

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

在视图控制器中,但不起作用。有什么想法吗

提前感谢:)

更新

我通过在info.plist中将“基于视图控制器的状态栏外观”设置为“是”并调用该方法,部分解决了该问题

- (BOOL)prefersStatusBarHidden
{
    return YES;
}
进入视图控制器。但现在我遇到了另一个问题:当我启动另一个控制器(UIImagePickerController)时,状态栏会出现。我试图设置
[myPicker prefersStatusBarHidden]但它似乎是只读的。有人知道解决办法吗


注意:
UIViewControllerBasedStatusBarAppearance=NO
UIViewControllerBasedStatusBarAppearance=NO
是一回事。

将此键添加到您的info.plist

UIViewControllerBasedStatusBarAppearance = NO
设置

在info.plist和每个控制器工具中

- (BOOL)prefersStatusBarHidden {
    return YES; // or NO
}
然后,每当需要状态栏外观更新时(例如,在控制器的
viewDidLoad
中),调用
setneedssStatusBarAppearanceUpdate

根据以下文件:

如果视图控制器的状态栏属性(例如隐藏/未隐藏状态或样式)发生更改,请调用此方法。如果在动画块内调用此方法,则更改将与动画块的其余部分一起设置动画

比如说

- (void)viewDidLoad {
    [super viewDidLoad];

    [self setNeedsStatusBarAppearanceUpdate];

    ...
}
将在每次加载视图控制器的视图时隐藏/取消隐藏状态栏(除了其他可能的样式更改)

(可选)您还可以在动画块中为封装调用的过渡设置动画

- (void)viewDidLoad {
    [super viewDidLoad];

    [UIView animateWithDuration:0.5 animations:^{
        [self setNeedsStatusBarAppearanceUpdate];
    }]; 

    ...
}
正确的解决方案:
- (BOOL)prefersStatusBarHidden {
    return YES; // or NO
}
- (void)viewDidLoad {
    [super viewDidLoad];

    [self setNeedsStatusBarAppearanceUpdate];

    ...
}
- (void)viewDidLoad {
    [super viewDidLoad];

    [UIView animateWithDuration:0.5 animations:^{
        [self setNeedsStatusBarAppearanceUpdate];
    }]; 

    ...
}