【问题标题】:Is there any way to cover an iOS 7 status bar with a UIView temporarily?有什么办法可以暂时用 UIView 覆盖 iOS 7 状态栏?
【发布时间】:2014-11-02 08:39:14
【问题描述】:

我在这里遇到了一些奇怪的情况,并且一直在尝试寻求帮助,但这些解决方案并没有真正解决我的问题,而是让问题变得更糟。

我有一个容器 viewController,它在水平滚动视图中有三个子控制器视图。我的默认子控制器视图是我的自定义相机页面。现在这就是我想要实现的目标。我想将状态栏隐藏在我的相机页面上,但希望其他两个视图(也就是我的另外两个子控制器)显示状态栏。

当我从左子控制器拖动到相机页面或从右子控制器拖动到相机页面时,我希望我的相机页面视图与状态栏重叠。

我唯一看到这样做的地方是在 Snapchat 上,我已经尝试了几个小时来弄清楚,但似乎无法提出解决方案。任何帮助表示赞赏。

【问题讨论】:

  • Hiding status bar iOS 7 的可能重复项
  • @MichaelRobinson 不,我的情况不同。我知道如何通过调用一个简单的方法来隐藏 viewController 中的状态栏。我的状态栏与我的相机页面 VIEW 重叠,因为我有三个子 viewController 视图由一个内容容器 viewController 管理。
  • 非常有趣。在 iPad 上运行 Snapchat - 转换时状态栏应该出现错误的区域。
  • 嗯,是的,我注意到@Jugal。也许Snapchat上的相机页面有它自己独特的窗口或其他东西,我不确定,但我对制作同样的效果很感兴趣。现在我只是使用 scrollView 代表来隐藏和显示状态栏,具体取决于哪个页面是可见的。
  • 其实我觉得是某种截图。当您进行过渡时,网络活动指示器会停止动画,并且在您放手之前时间不会改变:)

标签: ios uistatusbar childviewcontroller ios7-statusbar childviews


【解决方案1】:

您可以使用真正的状态栏来做到这一点。只需获取 Statusbars UIView,您就需要像这样使用 UIWindowLevel

    //Getting the Statusbar

    UIView *statusbar;
    NSString *key = @"statusBar";
    id object = [UIApplication sharedApplication];
    if ([object respondsToSelector:NSSelectorFromString(key)]) {
        statusbar = [object valueForKey:key];
    }

    //Set your Overlapping UIViewController or UIView one Level higher then the Statusbar.
    self.navigationController.view.window.windowLevel = UIWindowLevelStatusBar+1; //This will set the Overlapping UIViewControllers WindowLevel over the StatusBar.

【讨论】:

  • 嘿,你开始不错,但没有附加更改窗口级别的代码以完成答案。我不想为此写另一个答案,请添加窗口级别代码:D
  • @FahriAzimov 嗨,我添加了代码。它真的很容易使用。
猜你喜欢
  • 2013-09-26
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多