12

这是一个相当独特的问题。我已经搜索了几个小时,但找不到答案。我希望UIViewControllers我的应用程序中的所有内容都UIStatusBar可见。但是在某一个上UIViewController,当您点击 a 时UIButton,以下方法会调用相机 modalView 控制器。我想在调用以下方法时隐藏状态栏:

-(BOOL)startCameraControllerFromViewController:(UIViewController*)controller
                                 usingDelegate:(id )delegate 

我尝试使用UIViewController基于状态栏 = YES 更改 plist 文件(我只希望在UIStatusBar拉起该模式视图时隐藏)

我还在上述方法中尝试了以下方法:

[[UIApplication sharedApplication] setStatusBarHidden:YES 
                                   withAnimation:UIStatusBarAnimationNone];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

    [[UIApplication sharedApplication] setStatusBarHidden:YES 
                                       withAnimation:UIStatusBarAnimationNone];

似乎没有任何效果。任何人都可以帮忙吗?

4

5 回答 5

16

通过继承 UIImagePickerController 并将其添加到 .m 文件来解决它:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

然后将其导入使用选择器的类,而不是初始化图像选择器,而是初始化子类。

注意:确保在您的 plist 文件中将基于视图控制器的状态栏外观设置为 YES。

于 2013-12-01T11:39:23.960 回答
16

在您的视图控制器中实现此方法,

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

并在你想要的地方调用这个方法,

[self prefersStatusBarHidden];
于 2013-10-04T05:44:20.317 回答
3

您还可以像以前一样设置隐藏在 plist 中的状态栏。然后在应用程序委托中调用 setStatusBarHidden:NO 以在应用程序首次加载时将其设置为默认值。然后您再次调用此方法,您需要隐藏值为 YES 的状态栏。

于 2013-12-01T11:46:36.070 回答
0

已成功将 -(BOOL)prefersStatusBarHidden{...} 用于众多视图控制器,但它没有用于没有导航控制器的特定模式视图。根据 Karthika,我在Check the iOS status bar hidden with a modal view controller方面取得了成功。

于 2015-05-27T02:25:24.800 回答
0
-(void)viewWillApper:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
-(void)viewWillDisappear:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}

此代码将设置您要隐藏状态栏的视图控制器。

于 2015-08-13T02:29:13.957 回答