【问题标题】:Hide status bar in SWRevealViewController在 SWRevealViewController 中隐藏状态栏
【发布时间】:2015-11-11 08:35:24
【问题描述】:

我一直在尝试隐藏SWRevealViewController 中的状态栏,但隐藏状态栏不应该影响另一个UIViewController,它应该只在Sliding-Menu 打开的地方隐藏它。隐藏文本和日期等。!

我尝试了以下方法:

    self.setNeedsStatusBarAppearanceUpdate()

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

但是状态栏颜色只是变成了while颜色并且仍然没有隐藏! 我不知道怎么可能?

【问题讨论】:

  • 你使用故事板吗?
  • 肯定是的,首先是SWRevealViewController -> Empty UIViewController,它连接到rear_view -> MenuController 作为UITableViewController。
  • 如果您想在所有控制器中隐藏状态栏,那么您应该看到下面的链接,它将对您有所帮助。 stackoverflow.com/questions/18979837/…

标签: ios swift swrevealviewcontroller


【解决方案1】:

setNeedsStatusBarAppearanceUpdate() 之前将statusBarHidden 属性设置为true UIApplication.sharedApplication().statusBarHidden = true 如果您不希望状态栏隐藏在其他视图中。在viewWillDisappearviewWillDisappear中,您可以在视图消失之前显示状态栏

【讨论】:

  • 这会产生问题,因为我在 UIViewController 上有导航控制器,而在菜单上我没有导航控制器,只有状态栏。所以当我导航到菜单时,它也会隐藏 UIViewController 中不应该发生的状态栏。
  • @AaoIi 您在导航之前是否将statusBarHidden 设置为false?或者您可以尝试在没有导航栏的视图中执行此操作
  • @AaoIi 之前没有导航栏的视图中显示状态栏了吗?
  • 当我导航到 SWRevealViewController 时发生了什么,旧 UIViewController 的状态栏在没有导航控制器的情况下隐藏,而在 SWRevealViewController 中,状态栏被隐藏。当我导航回 UIViewController 时,状态栏从顶部滑动返回 ..
【解决方案2】:

菜单出现时隐藏它:

//delegate method
- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position {
    BOOL rm = position != FrontViewPositionLeft;
    [[UIApplication sharedApplication] setStatusBarHidden:rm withAnimation:UIStatusBarAnimationNone];
    [self setNeedsStatusBarAppearanceUpdate];
}

为了使代码正常工作,请在您的 plist 中设置:

View controller-based status bar appearance to NO
(UIViewControllerBasedStatusBarAppearance)

【讨论】:

  • 这也不行,我们应该玩 childViewControllerForStatusBarHidden 和 childViewControllerForStatusBarStyle 。但我不知道怎么可能!
  • 已编辑 - 新方式 - 测试并有效。揭示者已经实现了childViewControllerForStatusBarStyle——没有那个我的“旧”方式会奏效
  • 它再次出现了这个问题:当我导航到 SWRevealViewController 时发生了什么,旧 UIViewController 的状态栏在没有导航控制器的情况下隐藏,而在 SWRevealViewController 中状态栏被隐藏。当我导航回 UIViewController 时,状态栏从顶部滑动返回 ..
  • @AaoIi 我又创建了一个。 menuTableView 中的约束不知何故被破坏了,使用 snapKit,我只是将 self.view 的约束设置为 0。 ;)
【解决方案3】:

我把它放在 LeftMenuViewController 和 HomeViewController 中。

-(BOOL)prefersStatusBarHidden{
  return YES;
}

例如,我将以下内容放在 AppDelegate.m 中。 LeftMenuViewController 表示“左侧菜单”的 viewController。

HomeViewController *home = [[HomeViewController alloc]init];
LeftMenuViewController *leftMenu = [[LeftMenuViewController alloc]init];

UINavigationController *mainNC =
[[UINavigationController alloc]initWithRootViewController:home];

UINavigationController *menuNC =
[[UINavigationController alloc]initWithRootViewController:leftMenu];

_revealVC = [[SWRevealViewController alloc]initWithRearViewController:menuNC
                                                  frontViewController:mainNC];
self.window.rootViewController = _revealVC;
[self.window makeKeyAndVisible];

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多