想要知道tableView是否滑动到了底部,我们需要先了解一些有关于scrollView的概念(UITableView继承自UIScrollView)(查了资料后的个人理解.如有不对请帮忙指出)
contentSize 可以滚动的区域
contentOffset scrollView顶点相对于contentView顶点的偏移量
contentInset contentView四周距离scrollView的距离.
图示知道了这几个词的概念后,我们回到tableView上来.
首先,使用- (void)scrollViewDidScroll:(UIScrollView*)scrollView监听tableView的滚动,并打印scrollView.contentOffset的y值和scrollView.contentSize的height值,在往底部滚动的过程中,会发现,scrollView.contentOffset.y越来越大,越来越接近scrollView.contentSize.height的值.直到滚到底部,两者相差一个屏幕的高度(我使用6测试的)
打印值通过画图分析,也不难得出结果
分析图为使容判断到达底部的容错能力稍强,两者相减<=ScreenWidth + 1,就可以得到比较准确的效果了.而且因为有时,这两个值相减不一定是整数,+1也是为了避免因为这种情况出现导致判断错误.
判断代码:
if(delta <= 1 + [UIScreen mainScreen].bounds.size.height)
{
NSLog(@"YES");
}
else
{
NSLog(@"NO");
}
以上只分析了contentInset四个值都为0的情况.设置了contentInset也同理可以通过打印值,修改判断的条件得到答案.
网友评论