我需要在iOS7上隐藏状态栏。我已经尝试过设置:
Status bar is initially hidden
和
View controller-based status bar appearance
进入plist文件。当应用程序处于启动状态时,状态栏不会出现,但是当我更改视图控制器(是选项卡式应用程序)时,会出现状态栏!
我已经尝试设置
- (BOOL)prefersStatusBarHidden
{
return YES;
}
和
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
在视图控制器中,但不起作用。有什么想法吗?
提前谢谢你:)
更新
我通过将“查看基于控制器的状态栏外观”设置为“YES”到info.plist并调用方法来部分解决问题
- (BOOL)prefersStatusBarHidden
{
return YES;
}
进入视图控制器。但是现在我遇到了另一个问题:当我启动另一个控制器(UIImagePickerController)时会出现状态栏。我试图设置[myPicker prefersStatusBarHidden];
,但它似乎是只读的。有人知道解决方案吗?
P.S。:UIViewControllerBasedStatusBarAppearance = NO
和UIViewControllerBasedStatusBarAppearance = NO
是一回事......
答案 0 :(得分:7)
将此密钥添加到您的info.plist
UIViewControllerBasedStatusBarAppearance = NO
答案 1 :(得分:3)
设置
UIViewControllerBasedStatusBarAppearance = YES
在info.plist和每个控制器实现中
- (BOOL)prefersStatusBarHidden {
return YES; // or NO
}
然后,只要您需要更新状态栏外观(例如,在控制器的viewDidLoad
中),请致电setNeedsStatusBarAppearanceUpdate
。
根据setNeedsStatusBarAppearanceUpdate
的文档:
如果视图控制器的状态栏属性(例如隐藏/取消隐藏状态或样式)发生更改,请调用此方法。如果在动画块中调用此方法,则会将更改与动画块的其余部分一起设置动画。
例如
- (void)viewDidLoad {
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
...
}
每当视图控制器的视图加载时,将隐藏/取消隐藏状态栏(除了其他潜在的样式更改)。
此外,您还可以设置动画块中包含调用的过渡动画
- (void)viewDidLoad {
[super viewDidLoad];
[UIView animateWithDuration:0.5 animations:^{
[self setNeedsStatusBarAppearanceUpdate];
}];
...
}