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

时间:2016-01-02 11:18:22

标签: ios uiscrollview ios9

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

我尝试使用UIScrollViewDelegate方法在视图完成滚动时显示/隐藏状态栏:

- (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];
  }
}

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

enter image description here

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

enter image description here

如何让状态栏立即覆盖我的视图而不是扩展其上方的空间?

1 个答案:

答案 0 :(得分:1)

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

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