Xcode
使用Storyboard
中的Interface Builder
完全禁用状态栏是否有办法,以便在我创建新的View Controller
时不断将“状态栏”从推断变为无。
答案 0 :(得分:24)
这是一个完整的iOS 7兼容解决方案(不兼容iOS 6,因为太多东西已经改变)
来自Apple doc':信息属性列表主要参考':
UIViewControllerBasedStatusBarAppearance (布尔值 - iOS)指定状态栏外观是否基于状态栏下当前视图控制器首选的样式。当此键不存在或其值设置为YES时,视图控制器确定状态栏样式。当键设置为NO时,视图控制器(或应用程序)必须使用UIApplication对象显式设置状态栏样式。 iOS 7.0及更高版本支持此密钥。
因此,默认情况下,此键不存在(=与添加键相同的行为,但将其设置为YES):在这种情况下,每个视图控制器通过覆盖某些方法来确定状态栏行为 - 请参阅下文。 / p>
1)全局显示/隐藏所有应用的viewControllers状态栏
首先回答你的问题,为你的所有应用程序viewControllers制作单一的全局显示/隐藏设置
步骤1:在您的frameWork-Info.plst'文件中,添加“查看基于控制器的状态栏外观”键并将其设置为“否”。将此键设置为“NO”将使iOS 7不会调用方法'prefersStatusBarHidden'和'preferredStatusBarUpdateAnimation',请参阅下文。
第2步:在项目设置中 - >一般 - >部署信息,在应用程序启动期间选择“显示/隐藏”
就是这样:现在您可以全局显示或隐藏状态栏,符合iOS 7
2)让所有的viewControllers都可以单独控制状态栏(= iOS 7默认值)
步骤1:不添加密钥,或添加密钥,但将其设置为YES,以获取iOS 7的默认行为
第2步:在每个viewController中,您现在可以通过覆盖来确定是否显示/隐藏状态栏:
因此您需要覆盖这两个方法来控制状态栏行为,并为您的应用程序返回适当的值(请参阅doc ref了解所有可能的值,这已明确说明)。
控制应用启动期间的行为(显示第一个控制器),在项目设置下设置显示/隐藏 - >一般 - >部署信息
请注意,iOS 7仅支持单一外观样式(UIStatusBarStyleLightContent),所有其他外观样式均已弃用!
因此,您可以使用按钮轻松打开/关闭栏 - 尽可能灵活!
例如,在viewController中添加一个按钮,然后使用以下代码通过动画来打开/关闭条形码。\ / p>
- (BOOL)prefersStatusBarHidden
{
return self.isStatusBarHidden;
}
- (IBAction)buttonToggleStatusBar:(UIButton *)sender
{
[UIView animateWithDuration:1.0 animations:^{
self.isStatusBarHidden = !self.isStatusBarHidden;
[self setNeedsStatusBarAppearanceUpdate];
}];
}
您可以对首选动画
执行相同的操作高级注释:如果要为@property'isStatusBarHidden'设置默认值,则需要在'initWithCoder'(使用Storyboard时调用)而不是viewDidLoad中设置。原因是在'viewDidLoad'之前调用'prefersStatusBarHidden'和'preferredStatusBarUpdateAnimation'
答案 1 :(得分:12)
您是否已经检查过在Info.plist中设置UIStatusBarHidden
到YES
是否有效?查看文档:
http://developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW15
这将隐藏应用程序启动时的状态栏。