Pregunta

I have a UIViewController with a childViewController.

The childViewController either takes up the entire screen or parts of the screens, overlaying on top of the parentViewController.

When it takes up the entire screen I would like to change the UIStatusBarStyle.

In my plist, I have added View controller-based status bar appearance and set it to NO.

In the childViewController I have the following:

-(UIStatusBarStyle)preferredStatusBarStyle {
    if (self.isFullScreen) {
        return UIStatusBarStyleDefault;
    } else {
        return UIStatusBarStyleLightContent;
    }
}

-(UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
    return UIStatusBarAnimationFade;
}

When making the transition from half and fullscreen I call:

[self setNeedsStatusBarAppearanceUpdate];

But my UIStatusBar does not change appearance from light to dark.

A regular call to:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

works fine, however but I would like to take advantage of the fact that I can match the animation duration for the change inside an animation block.

Thank you.

¿Fue útil?

Solución

You should set the UIViewControllerBasedStatusBarAppearance to YES in the plist for using -(UIStatusBarStyle)preferredStatusBarStyle method.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top