首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIApplication.statusBarStyle在viewWillAppear和viewDidAppear之间的变化

UIApplication.statusBarStyle在viewWillAppear和viewDidAppear之间的变化
EN

Stack Overflow用户
提问于 2013-11-15 11:05:12
回答 3查看 884关注 0票数 4

在iOS7中运行一个最初为早期版本设计的应用程序,一个深灰色导航栏将文本为黑色的状态栏着色。

我试图使其适应最新版本,并将UIApplication.statusBarStyle设置为UIStatusBarStyleLightContent如下:

代码语言:javascript
运行
复制
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

这段代码应该将状态栏文本颜色更改为白色,但它没有。我在我的_statusBarRequestedStyle实例的UIApplication属性中放置了一个观察点,我可以看到在执行viewWillAppear和viewDidAppear方法之间,UIApplicationMain调用将它设置为0 (UIStatusBarStyleDefault)。

我不知道为什么状态栏样式在这一点上会改变,如果你也经历过同样的事情,我会很感激你的任何建议。

提前感谢!

编辑:来自iOS 7 UI转换指南(https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/Bars.html)

在iOS 7中,您可以从单个视图控制器控制状态栏的样式,并在应用程序运行时对其进行更改。如果您希望选择退出此行为,并使用UIApplication statusBarStyle方法设置状态栏样式,请将UIViewControllerBasedStatusBarAppearance键添加到应用程序的Info.plist文件中,并给出值NO。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-15 11:09:10

我认为系统正在根据视图控制器状态栏的外观更新状态栏。这是iOS7的新行为,默认情况下是打开的。

如果您想使用以前的API来显示状态栏,应该在应用程序的UIViewControllerBasedStatusBarAppearance中将NO设置为info.plist。

票数 5
EN

Stack Overflow用户

发布于 2013-11-15 11:11:43

选项1:

1)如果您的应用程序是基于视图控制器的,那么必须将其设置为app.plist文件,如下所示:

代码语言:javascript
运行
复制
 UIViewControllerBasedStatusBarAppearance=NO;

2)必须在每个控制器中设置此方法:

代码语言:javascript
运行
复制
 -(UIStatusBarStyle)preferredStatusBarStyle
  {
      return UIStatusBarStyleLightContent;
  }

备选方案2:

AppDelegate.m文件在应用程序didFinishLaunchingWithOptions: method中编写这一行

代码语言:javascript
运行
复制
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];

也许会有帮助。

票数 8
EN

Stack Overflow用户

发布于 2013-11-15 11:18:45

我希望它对你有帮助,请在你的.m文件中试一试

代码语言:javascript
运行
复制
    - (void)navigationController:(UINavigationController *)
       navigationController willShowViewController:(UIViewController *)
       viewController animated:(BOOL)animated

       {
         [[UIApplication sharedApplication] setStatusBarHidden:YES];

      }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19999625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档