尽管 PList 设置正确,但状态栏仍出现在 iOS 7 中
Posted
技术标签:
【中文标题】尽管 PList 设置正确,但状态栏仍出现在 iOS 7 中【英文标题】:Status Bar still appearing in iOS 7 despite correct PList settings 【发布时间】:2013-09-30 22:18:09 【问题描述】:我刚刚升级到 XCode 5 和 ios 7。我已经阅读了我能找到的所有建议,但状态栏仍然出现在我的应用顶部。
我尝试在我的 plist 中将基于视图控制器的状态栏外观设置为 NO:
我已经尝试添加:
- (void)viewDidLoad
// …
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
// iOS 7
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
else
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
// …
- (BOOL)prefersStatusBarHidden
return YES;
到我的根视图控制器。
我不知道还能尝试什么。我错过了什么明显的东西吗?
更新
我发现状态栏只出现在几个目标上,而运行相同代码的其他目标没有状态栏。我检查了他们所有的 plist... 与显示状态栏的唯一区别是它们在屏幕顶部显示一个广告栏... 我想知道这是否与它有关?
【问题讨论】:
我认为在 XIB .status 栏中设置默认位置或无。试试吧 它已经设置为无。将其设置为默认值没有效果... 检查它不能在 ios7/xcode 5 openfl.org/developer/forums/general-discussion/… 中隐藏状态栏但检查这个链接也试试***.com/questions/17763719/status-bar-wont-disappear 我已经尝试过该帖子中的解决方案,如问题中所述 你的plist设置是正确的,只要把这行[[UIApplication sharedApplication] setStatusBarHidden:YES];
放在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法里AppDelegate.m
就行了。
【参考方案1】:
在所有视图控制器中使用- (BOOL)prefersStatusBarHidden
return YES;
。祝你好运!
【讨论】:
在所有视图控制器中?!这肯定不是解决方案吗?我有很多,而且它似乎对根目录没有任何影响,那么为什么在整个过程中都有返回调用会有所帮助? 我不知道在你的情况下,在我的情况下,它正在解决问题。或者,您可以继承UIViewController
,并实现 prefersStatusBarHidden
,并使该类成为您所有视图控制器的超级类。
顺便问一下,你的应用真正的根视图控制器是什么?是导航控制器还是标签栏控制器?
它是一个导航控制器...我不应该继承 UIVC。不过还是谢谢。
那么,如果是导航控制器,你还认为你把prefersStatusBarHidden
放在了正确的位置吗?试试我建议的方法,应该可以解决问题。或者,还有另一种方法,将UINavigationController
子类化并在该类中实现prefersStatusBarHidden
,然后使用它。祝你好运!【参考方案2】:
在应用程序 .plist 中添加此键: UIViewControllerBasedStatusBarAppearance 并将其设置为“否”
【讨论】:
【参考方案3】:我最终删除了 plist 文件并从另一个有效的目标复制了一个,然后更改了必要的值。列表是相同的,但这似乎解决了它。我已经尝试过干净的构建,重置模拟器等,所以我猜这是 plist/xcode 中的错误。
【讨论】:
【参考方案4】:尝试在根视图控制器中添加下一个代码:
- (BOOL)prefersStatusBarHidden return YES;
【讨论】:
【参考方案5】:不那么老套的解决方案是插入
[application setStatusBarHidden:YES]
在 AppDelegate.m 方法中
- (BOOL) application(UIApplication *)application didFinishLaunchingWithOptions:(NSDirectory *)launchOptions
喜欢 Dipen Panchasara
他的:[UIApplication sharedApplication]
提供方法调用中给出的应用程序。
因为改变一个方法总是返回YES感觉不对
【讨论】:
不幸的是,这种方法在 iOS 9.0 之后被弃用了。弃用通知建议改用UIViewController
prefersStatusBarHidden
。以上是关于尽管 PList 设置正确,但状态栏仍出现在 iOS 7 中的主要内容,如果未能解决你的问题,请参考以下文章
尽管我正确设置了y,但Toast UILabel出现在屏幕外
尽管版本号正确且高于以前的版本号,但 iOS App Archive 提交失败并出现错误 [重复]
尽管将 info.plist 更改为 NSAppTransport Security 为 NO Xcode 7.2 iOS 9.2,但应用程序传输安全错误