1

我有一个带有 childViewController 的 UIViewController。

childViewController 要么占据整个屏幕,要么占据部分屏幕,覆盖在 parentViewController 之上。

当它占据整个屏幕时,我想更改 UIStatusBarStyle。

在我的 plist 中,我已添加View controller-based status bar appearance并将其设置为NO.

在 childViewController 我有以下内容:

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

-(UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
    return UIStatusBarAnimationFade;
}

从半屏和全屏转换时,我调用:

[self setNeedsStatusBarAppearanceUpdate];

但是我的 UIStatusBar 不会将外观从浅色变为深色。

定期致电:

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

工作正常,但是我想利用这样一个事实,即我可以将动画持续时间与动画块内的更改相匹配。

谢谢你。

4

1 回答 1

0

您应该UIViewControllerBasedStatusBarAppearance to YES在 plist 中设置使用 -(UIStatusBarStyle)preferredStatusBarStyle方法。

于 2013-10-04T06:32:26.860 回答