状态栏扩展滚动视图并将内容推离屏幕

status bar expanding scrollview and pushing content off screen

我有一个包含两页的垂直分页滚动视图,我想在首页显示状态栏,而不是在底部页面。

我尝试在视图完成滚动时使用 UIScrollViewDelegate 方法 show/hide 状态栏:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
  // top page
  if (scrollView.contentOffset.y == 0){
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
    [self.delegate messagesActive:self];
  } 
  // bottom page
  else if (scrollView.contentOffset.y == self.view.frame.size.height){
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
  }
}

但每次我从底部页面滚动到顶部页面时,状态栏都会在我的页面视图上方创建自己的 space,并将视图向下推到屏幕之外。无论有没有淡入淡出动画,都会发生这种情况。

下一次屏幕触摸会以某种方式强制视图通过滑动动画自行更正:

如何让状态栏立即覆盖我的视图,而不是在其上方展开 space?

// ... in viewDidLoad
self.automaticallyAdjustsScrollViewInsets = NO

此外,从 iOS 9 开始,UIApplication setStatusBarHidden 已弃用,不应使用。此技术同样适用于动态和动画状态栏: