ios7中状态栏的样式隐藏与样式更改

        ios7以后,状态栏的外观默认是依赖于控制器的,会随着控制器的不同设置而不同。iOS7之前,状态栏是全局性的。


一、针对某个控制器隐藏与样式更改

在控制器的

- (void)viewWillAppear:(BOOL)animated方法中添加如下代码:

if ([selfrespondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) 

{//ios7

        [self setNeedsStatusBarAppearanceUpdate];       

}

然后重写下面两个方法:

- (BOOL)prefersStatusBarHidden

{

    returnYES;//隐藏为YES,显示为NO

}

- (UIStatusBarStyle)preferredStatusBarStyle

{

    return UIStatusBarStyleLightContent;

    //UIStatusBarStyleDefault = 0 黑色文字,浅色背景时使用

    //UIStatusBarStyleLightContent = 1 白色文字,深色背景时使用

}

prefersStatusBarHidden返回YES,当前控制器的状态栏被隐藏。

prefersStatusBarHidden返回NO,根据preferredStatusBarStyle的返回值显示状态栏的颜色。

其中,setNeedsStatusBarAppearanceUpdate会回调prefersStatusBarHidden和preferredStatusBarStyle方法。


另外,如果没有重写preferredStatusBarStyle,View controller-based status bar appearance 必须为YES,否则无法隐藏指定控制器下的状态栏。但是如果View controller-based status bar appearance 为YES,就无法对状态栏的样式进行更改了。


二、全局隐藏与样式更改

1、隐藏

(1)在plist文件中,添加key:View controller-based status bar appearance 为NO;添加key:Status bar is initially hidden 为YES。

(2)在plist文件中,添加key:View controller-based status bar appearance 为NO,表示状态栏的外观不依赖于控制器,这样之后,添加:

[[UIApplication sharedApplicationsetStatusBarHidden:YESwithAnimation:UIStatusBarAnimationSlide];也可以隐藏全局状态栏。

2、更改样式

在plist文件中,添加key:View controller-based status bar appearance 为NO,然后再控制器的视图加载阶段里添加如下代码:

[[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

将全局的状态栏的变为白色字,默认是黑色。


三、ios7之前隐藏与更改全局状态栏

[[UIApplicationsharedApplication]setStatusBarHidden:YESwithAnimation:UIStatusBarAnimationSlide];

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值