#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
static UIView *superV;//scrollView和bannerView的父控件
if (!superV) {
superV = scrollView.superview;
}
if (superV.bounds.origin.y < 0) [superV setBounds:CGRectMake(0, 0, width, height)];//防止向下滑动过快导致的superView向下滑动过多
if (superV.bounds.origin.y > separatH) [superV setBounds:CGRectMake(0, separatH, width, height)];//防止向上滑动过快导致的superView向上滑动过多
if ([scrollView isEqual:self.tableView]) {
CGFloat currentY = superV.bounds.origin.y;
if ((currentY > separatH && scrollView.contentOffset.y > 0) ||//superV已经滑动了banner的高度,并且scrollView是向上滑动,separate是tableView顶部的控件高度
(scrollView.contentOffset.y < 0 && superV.bounds.origin.y <= 0)) return;//superV在初始位置,并且scrollView是向下滑动动作(比如刷新)
[superV setBounds:CGRectMake(0, scrollView.contentOffset.y + currentY, width, height)];//将滑动的距离换位改变superV的可视区域的改变
[self.tableView setContentOffset:CGPointZero];//tableView恢复初始值
}
}
利用bounds处理tableView顶部上下滑动
最新推荐文章于 2017-06-03 17:32:36 发布