我已经尝试将Info.plist'基于视图控制器的状态栏外观'设置为NO,我试过调用
[[UIApplication sharedApplication] setStatusBarHidden:YES];
我试过
-(BOOL)prefersStatusBarHidden{
return YES;
}
我尝试用
启动选择器[self presentViewController:picker animated:NO completion:^{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
然而,状态栏与相机控件重叠。它只存在于iOS 7中。
状态栏不会显示应用中的任何其他位置。我觉得我在这里错过了一个重要的难题,关于View Controller或UIImagePickerController的阅读量没有帮助我找到所说的拼图。
我希望其他人对这个问题有一些了解。谢谢。
编辑:我希望的效果是状态栏会显示应用程序中的每一个,除了相机选择器和我们使用的一些其他“外部”(电子邮件相关)视图控制器。
答案 0 :(得分:17)
如果你想保留ViewController-Based Status Bar Appearance
,请继承UIImagePickerController并覆盖prefersStatusBarHidden
和childViewControllerForStatusBarHidden
。
@interface NoStatusBarImagePickerController : UIImagePickerController
@end
@implementation NoStatusBarImagePickerController
- (BOOL)prefersStatusBarHidden {
return YES;
}
- (UIViewController *)childViewControllerForStatusBarHidden {
return nil;
}
@end
答案 1 :(得分:7)
试试这个:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
在你的appDelegate中。
答案 2 :(得分:3)
您需要打开一个额外的设置,从iOS 7开始。在您的应用的Info.plist中,为View controller-based status bar appearance
添加一行,一个布尔值,并将其设置为NO。
答案 3 :(得分:1)
PsychoDad方法适合我。我把以下
[[UIApplication sharedApplication] setStatusBarHidden:YES];
进入UIImagePickerController子类的方法viewWillDisappear。
但Alexandru Dranca method更好,因为这样状态栏根本不显示!
但是我觉得这是IOS 7的BUG ......
答案 4 :(得分:0)
“查看基于控制器的状态栏外观”设置为NO,对我有用。
答案 5 :(得分:0)
你应该离开
-(BOOL)prefersStatusBarHidden{
return YES;
}
并添加此
-(void)viewWillAppear:(BOOL)animated {
...
[self setNeedsStatusBarAppearanceUpdate];
...
}
答案 6 :(得分:0)
我一直在修复iOS7的ToonPAINT以及除了在Info.plist文件中设置两件事之外最终有效的东西(状态栏最初隐藏= NO;查看基于控制器的状态栏外观=否)
是改变状态栏的风格(即使我根本不想显示它);仅隐藏状态栏是不够的;听起来像iOS7的bug。
在app delegate中添加:
-(void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
{NB .. UIStatusBarStyleBlackTranslucent已弃用,如果尝试此操作可能会使用UIStatusBarStyleLightContent}
答案 7 :(得分:0)
我认为这个问题的答案是"这是一个iOS 7错误"。在我们的案例中,这里的方法都没有帮助,现在有几个人试图解决这个问题。
我无法说出重现这一点的步骤,但我已经看到有相同问题的人,我认为可以说这实际上是一个iOS 7个bug。大多数人都可以使用上面列出的多种方法解决此问题。但很少,你可以通过这种方式修复它。我希望如果你正在读这篇文章,你也不是那些人之一。
答案 8 :(得分:0)
这对我有用:
@implementation ViewController {
BOOL hideStatusBar;
}
- (void)showCamera {
UIImagePickerController *camera = [[UIImagePickerController alloc] init];
camera.modalPresentationStyle = UIModalPresentationCurrentContext;
camera.sourceType = UIImagePickerControllerSourceTypeCamera;
camera.delegate = self;
hideStatusBar = YES;
[self setNeedsStatusBarAppearanceUpdate];
[self presentViewController:camera animated:YES completion:nil];
}
-(BOOL)prefersStatusBarHidden{
return hideStatusBar;
}