Search code examples
iosobjective-cuistatusbar

iOS 7 - Hide status bar on certain view


This is a rather unique question. I have searched for hours and could not find the answer. I want ALL UIViewControllers in my app to have the UIStatusBar visible. But on a certain UIViewController, when you tap a UIButton, the following method calls the camera modalView controller. I want to hide the status bar when the following method is called:

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

I have tried changing the plist file with UIViewController based status bar = YES (I only want the UIStatusBar hidden when that modal view is pulled up)

I have also tried the following within the above method:

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

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

Nothing seems to work. Can anyone help?


Solution

  • Solved it by subclassing the UIImagePickerController and just adding this to the .m file:

    - (BOOL)prefersStatusBarHidden {
        return YES;
    }
    

    then importing it to the class that uses the picker, and instead of initializing the imagepicker i initialize the subclass.

    NOTE: make sure View controller-based status bar appearance is set to YES in your plist file.