显示状态栏和提示通知下拉列表

时间:2014-08-21 22:28:19

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

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

如果您将状态栏设置为隐藏(全屏应用),然后向下滑动,您会看到一个提示下拉“标签”,这太好了! (见下面的截图)

无论如何都要显示状态栏,以便用户可以看到时间及其服务和电池百分比以及所有内容,然后我们还有提示下拉“标签”显示而不是只是自动向下滑动整个通知中心?

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为没有直接的机制,但可以应用一个技巧来实现这一目标。但是,这也不会给出你在这里所期望的确切解决方案。但是让我分享一下我的想法。

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

  

- (void)touchesBegan:(NSSet *)触及withEvent:(UIEvent *)事件

     

UITouch * touch = [触及anyObject];

     

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

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

  

if(startPoint.y< = 40){

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

@Cautions: -

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

答案 1 :(得分:0)

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

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

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

在那个VC.m你做touchesBegan并且如果location.y位于状态栏的高度乘以2的区域(高度* 2,因为你可以从比状态栏略低的位置拉下通知事实证明,然后你将状态栏设置为隐藏状态并调用prefersStatusBarHidden YES和setNeedsStatusBarAppearanceUpdate

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

然后,在该区域下方触摸或触摸移动后,您可以再次显示状态栏。

这会使状态栏闪烁一瞬间,并显示三角形。

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



证明在布丁中:enter image description here