iOS故事板 - 在故事板上禁用状态栏一次

Rom*_*mes 12 xcode uiviewcontroller ios xcode-storyboard

有没有办法在Xcode使用StoryboardInterface Builder完全禁用状态栏时,这样当我创建一个新的时候,View Controller我不必将"状态栏"从推断变为无.

Ron*_*ers 24

这是一个完整的iOS 7兼容解决方案(不兼容iOS 6,因为太多东西已经改变)

来自Apple doc':信息属性列表主要参考':

UIViewControllerBasedStatusBarAppearance(Boolean - iOS)指定状态栏外观是否基于状态栏下当前视图控制器首选的样式.当此键不存在或其值设置为YES时,视图控制器确定状态栏样式.当键设置为NO时,视图控制器(或应用程序)必须使用UIApplication对象显式设置状态栏样式.iOS 7.0及更高版本支持此密钥.

因此,默认情况下,此键不存在(=与添加键相同的行为,但将其设置为YES):在这种情况下,每个视图控制器通过覆盖某些方法来确定状态栏行为 - 请参阅下文.

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中,您现在可以通过覆盖来确定是否显示/隐藏状态栏:

  • (BOOL)prefersStatusBarHidden
  • (UIStatusBarAnimation)preferredStatusBarUpdateAnimation

因此,您需要覆盖这两个方法来控制状态栏行为,并为您的应用程序返回适当的值(请参阅doc ref了解所有可能的值,这已明确说明).

控制应用程序启动期间的行为(显示第一个控制器),在项目设置下设置显示/隐藏 - >常规 - >部署信息

请注意,iOS 7仅支持单一外观样式(UIStatusBarStyleLightContent),所有其他样式均已弃用!

因此,您可以使用按钮轻松打开/关闭控制杆 - 尽可能灵活!

例如,向viewController添加一个按钮,然后使用以下代码通过动画切换栏的开启/关闭状态.

- (BOOL)prefersStatusBarHidden
{
    return self.isStatusBarHidden;
}

- (IBAction)buttonToggleStatusBar:(UIButton *)sender
{
    [UIView animateWithDuration:1.0 animations:^{
        self.isStatusBarHidden = !self.isStatusBarHidden;
        [self setNeedsStatusBarAppearanceUpdate];
    }];

}
Run Code Online (Sandbox Code Playgroud)

您可以对首选动画执行相同操作

高级注释:如果要为@property'isStatusBarHidden'设置默认值,则需要在'initWithCoder'(使用Storyboard时调用)而不是viewDidLoad中设置.原因是在'viewDidLoad'之前调用'prefersStatusBarHidden'和'preferredStatusBarUpdateAnimation'

  • Re:"请注意,iOS 7仅支持单一外观样式(UIStatusBarStyleLightContent),其他所有内容都已弃用!" 实际上它支持两个.浅色背景的"UIStatusBarStyleDefault"和深色背景的"UIStatusBarStyleLightContent". (5认同)

Jor*_*ers 12

你是否已经检查是否设置UIStatusBarHiddenYES你的Info.plist的作品?请参阅文档:http: //developer.apple.com/library/mac/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW15

这将隐藏应用程序启动时的状态栏.

  • 这仅在`UIViewControllerBasedStatusBarAppearance`为'NO`时有效 (11认同)
  • 我认为问题可能更清楚了.我认为提问者想要问的是,我也想知道如何隐藏故事板中的状态栏,所以我们也没有在故事板中看到它,而不仅仅是应用程序运行时.对于这种情况,这在Xcode 9.3中不起作用,有或没有@AlexanderFarber给出的附加设置 (4认同)