iOS故事板 – 一次禁用故事板上的状态栏
当在Interface Builder
使用Storyboard
来完全禁用状态栏时, Xcode
有一种方法,所以当我创build一个新的View Controller
我不必一直推断“状态栏”为无。
你已经检查过,如果在你的Info.plist作品中设置UIStatusBarHidden
为YES
? 请参阅文档: http : //developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW15
这会在应用程序启动时隐藏状态栏。
这是一个完整的iOS 7兼容解决scheme(不是iOS 6兼容,因为太多的东西已经改变)
从苹果文档':信息属性列表键参考':
UIViewControllerBasedStatusBarAppearance (Boolean – iOS)指定状态栏外观是否基于当前位于状态栏下的视图控制器所偏好的样式。 当此键不存在或其值设置为YES时,视图控制器将确定状态栏的样式。 当键设置为NO时,视图控制器(或应用程序)必须使用UIApplication对象明确地设置状态栏样式。 此密钥在iOS 7.0及更高版本中受支持。
所以在默认情况下,这个键不存在(=与添加键相同的行为,但将其设置为YES):在这种情况下,每个视图控制器通过重写某些方法来确定状态栏的行为。
1)全局显示/隐藏状态栏的所有应用程序的viewControllers
所以首先你的问题的全部答案,为所有的应用程序viewControllers做一个单一的,全局的显示/隐藏设置
步骤1:在你的frameWork-Info.plst文件中,添加'View controller-status bar appearance'这个键并将其设置为'NO'。 将此键设置为“NO”将使iOS 7不会调用方法的“prefersStatusBarHidden”和“preferredStatusBarUpdateAnimation”,详见下文。
第2步:在项目设置 – >一般 – >部署信息,在应用程序启动过程中select“显示/隐藏”
就是这样:现在你可以全局显示或隐藏状态栏,符合iOS 7
2)让所有的viewController都有状态栏的单独控制(默认是iOS 7)
第1步:不要添encryption钥,或添加它,但将其设置为YES,以获得iOS 7的默认行为
第2步:在每个viewController中,您现在可以通过覆盖来确定是否显示/隐藏状态栏:
- (BOOL)prefersStatusBarHidden
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
所以你需要重写这两个方法来控制状态栏的行为,并为你的应用程序返回适当的值(参见doc ref所有可能的值,这是清楚的解释)。
控制应用程序启动过程中的行为(显示的第一个控制器),在您的项目设置 – >常规 – >部署信息下设置显示/隐藏
请注意,iOS 7只支持单一的外观样式(UIStatusBarStyleLightContent),其他所有的都不推荐使用!
因此,您可以使用button轻松地打开/closures酒吧 – 尽可能灵活!
例如,添加一个button到你的viewController,并布尔@property'isStatusBarHidden'使用下面的代码来打开/closures与animation条。
- (BOOL)prefersStatusBarHidden { return self.isStatusBarHidden; } - (IBAction)buttonToggleStatusBar:(UIButton *)sender { [UIView animateWithDuration:1.0 animations:^{ self.isStatusBarHidden = !self.isStatusBarHidden; [self setNeedsStatusBarAppearanceUpdate]; }]; }
你可以为首选的animation做同样的事情
先进的注意:如果你想为@property'isStatusBarHidden'设置一个默认值,你需要在'initWithCoder'(当使用Storyboards时调用)而不是viewDidLoad。 原因是在'viewDidLoad'之前调用'prefersStatusBarHidden'和'preferredStatusBarUpdateAnimation'