【问题标题】:Show status bar AND prompt notification drop down显示状态栏和提示通知下拉
【发布时间】:2014-08-21 22:28:19
【问题描述】:

在 iOS 中,如果您从屏幕垂直滑动到屏幕上,您会看到通知屏幕下拉。

如果您将状态栏设置为隐藏(全屏应用),然后向下滑动,您会得到一个提示下拉“选项卡”,这太棒了! (见下方截图)

是否有任何方式显示状态栏,以便用户可以看到时间和他们的服务和电池百分比以及所有内容,然后我们也有提示下拉“选项卡”显示,而不是它只是自动向下滑动整个通知中心?

【问题讨论】:

  • Facebook 的 Paper 应用程序具有此功能。
  • @mvadim 好吧,它具有下拉选项卡功能,但我试图让它出现并显示状态栏。他们这样做时没有出现状态栏(又名全屏应用),这通常是全屏应用的默认设置
  • ahaaa 现在我明白了,好的会尝试找到解决方案

标签: ios objective-c statusbar nsnotificationcenter ios7-statusbar


【解决方案1】:

我相信没有直接的机制,但可以应用一个技巧来实现这一点。但这同样不会给出您在这里所期望的确切解决方案。但是让我分享一下我的想法。

在 UIViewController 子类中实现 touchBegan 方法并捕获触摸事件的起点。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

UITouch *touch = [触摸任何对象];

CGPoint startPoint = [touch locationInView:self.view];

然后您可以将 y 坐标值与 30/40 像素进行比较(这是应用屏幕检测到通知拉动事件的大约像素高度)

if(startPoint.y

现在您可以将 statusBarHidden 属性设置为 NO

@注意事项:-

  • 您需要在触摸事件后稍微延迟设置属性,否则它会立即拉下通知视图。
  • 只要 statusBar 可见,您的下拉菜单就会消失。
  • 另外,您需要在一定时间间隔后再次隐藏状态栏。
  • 由于此功能应在应用程序的任何屏幕(视图)上运行,您可能需要在 UIViewController 上创建一个 Category 以避免在每个类中处理此问题.
  • 您应该小心处理手势,因为您会覆盖 touchesBegan(请参阅开发中心的责任链机制)

【讨论】:

    【解决方案2】:

    在 appDelegate 中,您需要添加第二个 UIWindow(属性 STRONG 保留),它是您的应用的完整大小,具有清晰的背景。

    将 UIWINDOWS 级别设置为:setWindowLevel:UIWindowLevelStatusBar+1.0f

    然后你需要添加第二个VC,并将其设置为第二个UIWindow的子视图。

    在那个 VC.m 中你确实 touchesBegan 并且如果 location.y 在状态栏高度乘以 2 的区域内(高度*2,因为你可以将通知从比状态栏低一点的地方拉下来)然后将状态栏设置为隐藏并调用prefersStatusBarHidden YES 和setNeedsStatusBarAppearanceUpdate

    *(请注意,您必须创建新的 UIWindow 和 VC,否则您将无法在状态栏位置检测到 touchesBegan)。

    然后一旦 touchesEnded 或 touchesMoved 在该区域下方,您可以使状态栏再次可见。

    这会使状态栏闪烁片刻,并导致出现三角形。

    现在将您的整个应用功能移至第二个 VC




    证明在布丁中:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多