在ios 11中滚动collectionView时如何隐藏navigationBar?

时间:2018-01-17 18:19:59

标签: ios11 smooth-scrolling collectionview searchbar

在iOS 11中,如果我们设置为隐藏,则在滚动tableView时会隐藏searchBar。滚动collectionView时如何隐藏searchBar,navigationBar和tabBar?向下滚动时取消隐藏所有内容?谢谢你的帮助...

2 个答案:

答案 0 :(得分:3)

  1. UIViewController中的子类UIScrollViewDelegate(即class ViewController: UIViewController, UIScrollViewDelegate { codes... }
  2. 实现scrollViewDidScroll委托方法

    func scrollViewDidScroll(scrollView: UIScrollView) { 
        let pan = scrollView.panGestureRecognizer
        let velocity = pan.velocityInView(scrollView).y
        if velocity < -5 { 
            self.navigationController?.setNavigationBarHidden(true, animated: true) 
            self.navigationController?.setToolbarHidden(true, animated: true)
        } else if velocity > 5 {
            self.navigationController?.setNavigationBarHidden(false, animated: true)
            self.navigationController?.setToolbarHidden(false, animated: true)
        }
    }
    

答案 1 :(得分:0)

将KTang接受的答案翻译成Objective-C:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    UIPanGestureRecognizer *pan = scrollView.panGestureRecognizer;
    CGFloat velocity = [pan velocityInView:scrollView].y;

    if (velocity < -5) {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        [self.navigationController setToolbarHidden:YES animated:YES];
    } else if (velocity > 5) {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        [self.navigationController setToolbarHidden:YES animated:YES];
    }
}