iOS Developer

11、iOS状态栏显示

2017-06-08  本文已影响777人  MartinCQ

IOS7之前

//显示隐藏状态栏
[[UIApplicationsharedApplication] setStatusBarHidden:isHide];
//设置状态栏颜色
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
UIStatusBarStyleLightContent //白色
UIStatusBarStyleDefault     //黑色

IOS7及以后
1、首先

//这个方法是写在BasenavigationController中
/**为了让该navgationController下的每一个VC都可以获得更改statusBar的权利*/
-(UIViewController *)childViewControllerForStatusBarStyle{
    return self.topViewController;
}

2、然后在显示的View中

//下面方法是写在Viewcontroller中,重载父类方法
/**状态栏格式*/
-(UIStatusBarStyle)preferredStatusBarStyle{
    switch (self.cqStatusBarType) {
        case CQStatusTypeBlack:
        {
            return UIStatusBarStyleDefault;
        }
            break;
        case CQStatusTypeWhite:
        {
            if (ISIOS7) {
                return UIStatusBarStyleLightContent;
            }else{
                return UIStatusBarStyleBlackTranslucent;
            }
        }
            break;
        default:
            break;
    }
    return UIStatusBarStyleDefault;
}

-(BOOL)prefersStatusBarHidden{

    return  NO;
}

注意 如果info.plist文件中 UIViewControllerBasedStatusBarAppearance == NO 的话以上无效,用iOS7之前的方法有用
//在当前Controller中需要更新状态时需要在主线程执行该方法
[[[[UIApplication sharedApplication] keyWindow] rootViewController] setNeedsStatusBarAppearanceUpdate];

上一篇下一篇

猜你喜欢

热点阅读