允许 UIScrollView 滚动过去的内容而不弹跳
Posted
技术标签:
【中文标题】允许 UIScrollView 滚动过去的内容而不弹跳【英文标题】:Allow UIScrollView to Scroll Past Content Without Bouncing 【发布时间】:2014-06-24 19:01:42 【问题描述】:概述
我正在构建一个应用程序,允许用户将主 UICollectionView
滚动一定量以加载相关内容。过度滚动的触觉体验应该和很多其他ios应用一样会导致当前页面内容刷新,所以我设置了collectionView.bounce = YES
。
一旦用户滚动指定的数量,我想将当前的UICollectionView
向下移动并移出视图,同时将新页面从设备顶部向下移动到视图中,非常类似于文章间Digg iPhone 应用中的导航。
我正在使用UIScrollViewDelegate
方法检测过度滚动:
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
CGFloat offsetY = scrollView.contentOffset.y;
CGFloat contentHeight = scrollView.contentSize.height;
if (offsetY < -40)
[self.delegate overscrolledUp];
if (offsetY - (contentHeight - scrollView.frame.size.height) > 40)
[self.delegate overscrolledDown];
问题
代理负责移动这些UICollectionView
s 的框架,但我的问题是,当当前页面向下移动并移出视图(或者如果用户向下滚动时向上移出视图),@ 987654327@ 也将滚动反弹回 (0,0) 的contentOffset
。这会导致我想避免的看起来很奇怪的动画。我希望用户能够进行过度滚动,以便显示一个指示符来描述他们可以看到的新内容,但我不希望在换页动画期间反转过度滚动。
问题
有没有办法防止UICollectionView
/UIScrollView
在用户滚动内容后将其滚动返回到 (0,0)?
【问题讨论】:
【参考方案1】:看看
https://github.com/enormego/EGOTableViewPullRefresh
它包含一个拉刷新tableview的代码,你可以直接使用它或者作为灵感来源。
【讨论】:
谢谢!一旦达到阈值,诀窍就是将 scrollView 的 contentInset 设置为偏移量。以上是关于允许 UIScrollView 滚动过去的内容而不弹跳的主要内容,如果未能解决你的问题,请参考以下文章