iOS status bar的详细研究

原创 2015年11月19日 21:54:29

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

}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

android 源代码研究之----frameworks-----status bar 状态栏

相关的文件位置Eclair/frameworks/base/core/res/res目录下的/layout/status_bar.xml/values/arrays.xml  /Eclair/fram...

iOS隐藏status bar原理

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于a...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

《iOS Human Interface Guidelines》——The Status Bar

本文翻译自苹果官方文档《iOS Human Interface Guidelines》——Bars,讲解状态栏的相关注意事项

IOS 知识小集(Status Bar变换)

转载:http://blog.csdn.net/wk598/article/details/51955068 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改...

ios开发-status bar总结

status bar总结改变status bar 的颜色最快捷的3方式: info.plist中info.plist中View controller-based status bar appearan...

iOS7下隐藏status bar

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先级高于a...

IOS 知识小集(Status Bar变换)

背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改变状态栏颜色和控制状态栏显示和隐藏的API,在iOS 的不同版本中也发生了很多变化。 iOS 7以前 ...

iOS7隐藏状态栏 status Bar

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也...

ios修改status bar颜色及xcode7下日志出现CGContextSaveGState: invalid context 0x0错误

设计稿要求Status bar的颜色是白色的,按照以往的做法就是: info.plist添加View controller-based status bar appearance为NO(默认是YES)...
  • IROYCN
  • IROYCN
  • 2015-10-14 11:10
  • 1813

xcode5 ios7 status bar 各种隐藏问题

各种关于ios7 下隐藏status bar的问题。汇集一下: 用xcode5开发新的iOS游戏,虽然我已经在info.plist里面把Status bar is initially...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)