iOS7下status bar相關問題的解決方法

iOS7裏status bar的實現跟iOS6下有寫不一樣,前段時間碰到了這個問題,今天總結下


首先網上有很多解決辦法,但是有些我覺得並沒有按照蘋果的思路來,比如把UIViewControllerBasedStatusBarAppearance在plist裏設置爲NO的方法,這個方法的確可行,但是並不是一個“正確”的思路,而且會有些問題,比如,當你在某個界面隱藏了status bar,退回到上一個界面時,status bar仍然是隱藏的


首先,蘋果把UIViewControllerBasedStatusBarAppearance默認的值設爲YES,是有他的道理的,新系統下,蘋果希望我們的viewcontroller去控制status bar,也就是說,我們大多數的界面應該是統一的,偶爾一些viewcontroller需要status bar特殊控制的,完全交給當前的viewcontroller來做。


代碼,其中_isFullScreen需要你在調用setNeedsStatusBarAppearanceUpdate

之前設置好相應的值

#pragma mark - Status Bar

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleDefault;
}

- (BOOL)prefersStatusBarHidden
{
    return _isFullScreen;
}

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
{
    return UIStatusBarAnimationSlide;
}

這樣,當你想要控制status bar的展現形式時(不需要動畫就去掉),只需要調用

[UIView animateWithDuration:.3 animations:^{
            if (ISIOS7) {
                [self setNeedsStatusBarAppearanceUpdate];
            }
        }];



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章