iOS SDK - 如何在使用UIImagePickerController时恢复状态栏?

dan*_*dan 22 iphone statusbar uiimagepickercontroller

一旦我将UIImagePickerController子视图添加到我的视图中,状态栏就会消失,我无法将其恢复.有没有办法保持状态栏可见?

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;


[self.view addSubview:imagePicker.view];

[imagePicker viewWillAppear:YES];
[imagePicker viewDidAppear:YES];

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
Run Code Online (Sandbox Code Playgroud)

Bra*_*Guy 29

我也必须在相机应用程序中做同样的事情.显然,除了将状态栏设置为不隐藏之外,还必须在摄像机视图消失后重置其样式.试试这个:

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
Run Code Online (Sandbox Code Playgroud)

  • -setStatusBarHidden:animated已被弃用,请使用-setStatusBarHidden:withAnimation:来代替,在下面检查alex的答案。 (2认同)

ale*_*lex 15

接受的答案的解决方案同时被弃用了.

使用

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
Run Code Online (Sandbox Code Playgroud)

代替

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
Run Code Online (Sandbox Code Playgroud)

为动画参数的有效值为UIStatusBarAnimationNone,UIStatusBarAnimationFade,UIStatusBarAnimationSlide.详细信息可在文档中找到.


Tim*_*Tim 6

阅读完这篇文章并找不到任何有效的答案后,我设法通过以下方式使其工作:

•为UIImagePickerController设置委托
•在该委托中,隐藏委托navigationController:didShowViewController:animated:功能中的状态栏.

例如:

-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}
Run Code Online (Sandbox Code Playgroud)