在iOS 7状态栏上方添加子视图

在iOS 7状态栏上方添加子视图,ios,view,statusbar,addsubview,Ios,View,Statusbar,Addsubview,我有一个小的矩形视图,从我的应用程序顶部向下动画。我需要它在屏幕的顶部,并在状态栏上向下设置动画,但是动画视图显示在状态栏下。有人知道我如何通过状态栏获取它吗 这是我目前正在做的事情 [self.navigationController.view addSubview:self.headerView]; 它工作正常,位置正确,只是它位于状态栏下方。有什么想法吗 编辑:我知道这是可能的,因为snapchat做到了 您可以做的一个选择是,当您为自己的headerView设置动画时 拍摄状态栏的快照

我有一个小的矩形视图,从我的应用程序顶部向下动画。我需要它在屏幕的顶部,并在状态栏上向下设置动画,但是动画视图显示在状态栏下。有人知道我如何通过状态栏获取它吗

这是我目前正在做的事情

[self.navigationController.view addSubview:self.headerView];
它工作正常,位置正确,只是它位于状态栏下方。有什么想法吗


编辑:我知道这是可能的,因为snapchat做到了

您可以做的一个选择是,当您为自己的headerView设置动画时

  • 拍摄状态栏的快照
  • 隐藏状态栏
  • 在状态栏位置添加快照视图的子视图
  • 在快照视图上执行标题视图动画
  • 删除快照视图并再次显示状态栏
  • 这样你们就可以得到很好的动画,看起来就像是在状态栏上做的一样

    编辑:我将尝试用伪代码进行解释

    // 1. take snapshot of the status bar
    UIView* snapshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
    
    // 2. hide statusbar
    _statusBarHidden = YES;
    [self setNeedsStatusBarAppearanceUpdate];
    
    // you need to set "View controller-based status bar appearance" option to yes on plist
    - (BOOL)prefersStatusBarHidden
    {
        return _statusBarHidden;
    }
    
    // 3. add subview of snapshot view on the statusbar position
    CGRect frame = self.view.frame;
    frame.height = [[UIApplication sharedApplication] statusBarFrame].size.height;
    [self.view addSubView:snapshotView];
    
    // 4. do the header view animation over snapshot view
    .. Just do the animation you already were doing
    
    // 5. remove snapshot view and show statusbar again.
    [snapshotView removeFromSuperview];
    
    _statusBarHidden = NO;
    [self setNeedsStatusBarAppearanceUpdate];
    

    你不能把任何东西放在状态栏上。您最好在视图显示在屏幕上时将其关闭,然后在删除子视图时重新打开。@nhgrif如何动态地将其关闭,然后再打开?我看过一些帖子,上面提到在plist文件中添加了一些内容,但我只需要在特定的视图控制器上关闭它5秒钟,而不是我的整个
    plist
    选项,我相信,它允许单个视图控制器自己关闭或打开。我如何拍摄该条的快照?