状态栏的隐藏

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于application的设置。为NO则以application的设置为准,view controller的prefersStatusBarHidden方法无效,是根本不会被调用的。

#一、如果View controller-based status bar appearance 设为YES。

这时 view controller中对status bar的设置优先级高于application的设置,用下面的方式隐藏status bar:

1、在view controller中调用setNeedsStatusBarAppearanceUpdate,更新status bar的显示。

- (void)viewDidAppear:(BOOL)animated

{

[super viewDidAppear:animated];

if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

[self prefersStatusBarHidden];

[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

}

}

2、覆盖view controller的prefersStatusBarHidden的实现,返会YES。

- (BOOL)prefersStatusBarHidden

{

return YES;

}

二、如果View controller-based status bar appearance 设为NO,这时application的设置优先级最高,用下面的方式隐藏status bar:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

综合上面的结论,如果iOS6和iOS7都支持,则处理方式如下:

一、如果View controller-based status bar appearance 设为NO。

则在iOS6和iOS7都是用下面的方法隐藏status bar。

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

二、如果View controller-based status bar appearance 设为YES。

则需要判断当前是iOS6还是iOS7。如果是iOS6,则还通过sharedApplication隐藏。

如果是iOS7,则用setNeedsStatusBarAppearanceUpdate加prefersStatusBarHidden的方式来隐藏 status bar。

取info.plist中 View controller-based status bar appearance中的设置:

NSNumber *isVCBasedStatusBarAppearanceNum = [[NSBundle mainBundle]objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"];

if (isVCBasedStatusBarAppearanceNum)

{

_isVCBasedStatusBarAppearance = isVCBasedStatusBarAppearanceNum.boolValue;

}  else {

_isVCBasedStatusBarAppearance = YES; // default

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 新建工程,状态栏默认竖屏显示,横屏隐藏,字体黑色。 未修改Info.plist情况下,状态栏默认由控制器管理,在对...
    Sparkle_S阅读 12,036评论 0 6
  • info.plist文件中,View controller-based status bar appearance...
    冰点雨阅读 5,356评论 0 0
  • 一、启动时隐藏状态了 iOS显示启动页时隐藏状态栏 在iOS7之后,默认情况下 状态栏是交给控制器管理的 如果想让...
    独孤流阅读 1,810评论 0 0
  • 状态栏: 导论: ios上状态栏:显示信号 、时间、电池状态的20像素的位置 状态栏分为前景和背景部分前景部分:就...
    Kasign阅读 9,342评论 0 0
  • Two Sum问题:给定一个数组nums和一个正整数target,试从数组中找出2个元素,它们相加之和恰好为tar...
    沙札罕阅读 3,411评论 2 1

友情链接更多精彩内容