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

}


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

IOS status bar 配置方法

ios上状态栏 就是指的最上面的20像素高的部分,显示了电池、时间、运营商等信息。 可以选择status bar 之上元素的颜色(黑、白) , 默认的黑色(UIStatusBa...
  • WLQ861025
  • WLQ861025
  • 2016年01月04日 17:31
  • 1906

iOS 控制Status Bar的隐藏和显示

1.在info.plist设置中,View controller-based status bar appearance的值要设置成YES,经测试当是NO的时候,接下来要做的事不会被执行。 ...
  • youshaoduo
  • youshaoduo
  • 2017年01月03日 11:25
  • 4739

IOS8下如何去掉状态栏(status bar initially hidden属性不好使)`

学ios学的真郁闷,好不容易把
  • jbb0403
  • jbb0403
  • 2014年10月12日 17:10
  • 2154

iOS-Hide Status bar

  • ouyangtianhan
  • ouyangtianhan
  • 2015年01月08日 21:17
  • 1650

iOS7中的status Bar问题

http://nsdifficult.com/blog/20131015/ios7statusbarproblem/ 首先推荐这篇文章:Redesign Your App...
  • leonpengweicn
  • leonpengweicn
  • 2014年03月06日 12:43
  • 1180

IOS 知识小集(Status Bar变换)

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

iOS7下隐藏status bar的详细研究

info.plist文件中,View controller-based status bar appearance项设为YES,则View controller对status bar的设置优先...
  • gaoyp
  • gaoyp
  • 2014年01月17日 14:31
  • 11089

iOS 隐藏status bar(状态栏/电池条)的详细研究

今天隐藏做项目,横屏时隐藏电池条发现隐藏失败,查了半天资料,总结如下: 若info.plist文件中,View controller-based status...
  • baidu_25743639
  • baidu_25743639
  • 2016年09月21日 21:03
  • 3709

解决在iphone(ios7)中状态栏(Status bar)会覆盖(overlap)在软件(view)上的问题

做了个软件,在android下显示正常,在iphone中最顶部的statusbar为何会覆盖在软件上方?如图: 解决办法: 第一种: 如果允许,隐藏状态栏。 在xcode中找到Resourc...
  • gundumw100
  • gundumw100
  • 2017年04月10日 18:56
  • 179

iOS7隐藏状态栏 status Bar

iOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIViewController的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的hide/show状态的方法也...
  • dqjyong
  • dqjyong
  • 2014年01月06日 00:03
  • 27962
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS status bar的详细研究
举报原因:
原因补充:

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