Search code examples
iosobjective-ciphoneuinavigationcontrolleruiinterfaceorientation

iOS: StatusBar appearance error


I have first ViewController with Portrait orientation and second ViewController with landscape orientation. The first ViewController have status bar, the second have not.

Then I present second ViewController from the first ViewController, it presenting with out status bar. Then I dismiss it I go back to first ViewController and have my status bar, but the position of the View is incorrect.

View position like screen have not status bar. How can I update it?

enter image description here


Solution

  • first, try this:

    In your landscape VC declare the following:

    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        [[UIApplication sharedApplication] setStatusBarHidden:true];
        // you can also try to hide the status bar with animation:
        [[UIApplication sharedApplication] setStatusBarHidden:true withAnimation:UIStatusBarAnimationSlide];
    }
    

    In your portraint VC declare the following:

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        [[UIApplication sharedApplication] setStatusBarHidden:false];
        // you can also try to show the status bar with animation:
       [[UIApplication sharedApplication] setStatusBarHidden:false withAnimation:UIStatusBarAnimationSlide];
    }