解决iOS开发中调用UIScrollView或UITableView的setContentOffset方法产生的抖动

By | 2012 年 11 月 12 日

现在“下拉刷新”和“上拉加载更多”都是常用的移动端程序的设计了。

实现的话,下拉刷新有现成的开源库:EGOTableViewPullRefresh

上拉加载更多的话,自己研究,写了一个类似的tableViewCell。但是在ScrollViewDidEndDragging方法中修改scrollView的setContentInset时发生了抖动。

花了挺长时间研究,最后发现原因在于当调用setContentInset的时候scrollView的contentOffset会跟着一起变化(由于是设置inset的bottom,所以scrollview会自动到最底端),然后由于是在ScrollViewDidEndDragging,视图还要从以前的位置动画回到scrollview的末尾(bounce效果)。于是修改inset之后造成的当前contentOffset位置就和bounce动画的初值不等,造成了抖动。

解决办法也很简单,就是在setContentInset之后,立马重设一下contentOffset。

        float contentTop = scrollView.contentOffset.y;
        [scrollView setContentInset:oriIns];
        [scrollView setContentOffset:CGPointMake(0, contentTop) animated:NO];

2 thoughts on “解决iOS开发中调用UIScrollView或UITableView的setContentOffset方法产生的抖动

发表评论

电子邮件地址不会被公开。 必填项已用*标注