状态栏仍在显示

12

我真的非常沮丧!!

我尝试了所有可能的方法来消除我的应用程序顶部的UIStatusBar...

我尝试过:

  • 在IB中将状态栏设置为“无”

  • 在应用程序启动时和每个场景中运行[[UIApplication sharedApplication] setStatusBarHidden:YES];

  • 在.plist中更改启动时StatusBar Hidden的值:YES

  • 在目标主页上设置相同的值

  • 在应用程序委托中设置 - (BOOL)prefersStatusBarHidden { return YES; }

实际上,这些都没有起作用...... 它仍然出现在我的所有视图中,这真的让人非常沮丧

再次感谢 :)

附注:我在xcode 5、iOS 7 beta 6开发者测试版中,但我的旧iOS 6和xcode 4应用程序也会出现这种情况


[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 从https://dev59.com/1G025IYBdhLWcg3w76lq - iPatel
如果你看到我的帖子,我已经尝试过了,但还是谢谢你的建议 :) - tyler53
您还可以在info.plist文件中添加“View controller-based status bar appearance”并将其设置为“NO”,如此帖子所示: https://dev59.com/kGMm5IYBdhLWcg3wO9Hy - jsherk
看了Bram的答案了吗?对我来说比“正确答案”简单多了。对我有效。 - user234736
4个回答

20
请尝试此操作。
//viewDidload
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
    // iOS 7
    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
} else {
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}


// Add this Method
- (BOOL)prefersStatusBarHidden
{
return YES;
}

这段代码来自这个链接


这个布尔方法是在每个类中还是在AppDelegate中? - tyler53
在你的rootViewController实现这个方法,将它实现在rootViewController中是全局的。 - Vaibhav Gautam
我没有根视图控制器,我有应用程序委托,并且为我的一个视图拥有一个视图控制器,但这是一个SKSprite项目,因此它没有填充根视图控制器。 - tyler53
我没有使用过SKSprite kit,但应该可以在你的第一个视图控制器中使用。 - Vaibhav Gautam
1
“不太”令人惊讶的是,我没有任何苹果开发者账户,“令人惊讶”的是,我已经在网站上发布了链接。你可以责怪他们。 - Vaibhav Gautam
23
你为什么要调用-prefersStatusBarHidden方法? - lhunath

15

我通常做的是向Info.plist文件添加两个键值对属性。

输入图像描述

这些属性的源代码如下:

输入图像描述


2
有一件事每个人都没有强调,那就是"基于视图控制器的状态栏外观"是一个BOOLEAN值。 我把它设置成了String类型,差点抓狂。 - n00bProgrammer
2
你真的应该避免禁用基于视图控制器的状态栏外观。这只是一个兼容选项,旨在使旧应用程序在iOS 7下工作,当开发人员没有时间或无法实现新的事物方式时使用。 - lhunath

4

您需要向视图控制器中添加一个方法,而不是写入应用程序代理。

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

3

有一件事情发生在我身上!!

对于其他人,确保您在正确的*目标*中修改了info.plist:/

加上已接受的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接