无法使用 UIScrollView 和 pagingEnabled=YES 禁用反弹
Posted
技术标签:
【中文标题】无法使用 UIScrollView 和 pagingEnabled=YES 禁用反弹【英文标题】:Can't disable bounce with UIScrollView and pagingEnabled=YES 【发布时间】:2011-08-09 21:30:14 【问题描述】:我有 UIViewController
里面有 UIScrollView
。
m_scrollView
是 pagingEnabled=YES;
在每个“页面”上,我都有显示文章的 UIViewController。
为了防止用户在我使用的页面之间滑动时弹跳:
m_scrollView.bounces=NO;
甚至
m_scrollView.alwaysBounceHorizonal=NO;
我注意到更改仅针对未反弹的最后一页。 但是当滑动其他页面时,它们会弹跳。
编辑: 最佳解决方案是使第一页和最后一页弹跳(因此用户会得到repsond没有更多页面\分页)和其他页面不弹跳
滑动页面时弹跳的烦人之处在于弹跳效果不相等。 有时它会弹得更多,有时弹得更少。
我认为这与页面中的加载数据有关,但我不认为是这种情况,因为当所有页面都加载并且后台没有发生异步加载操作时也会发生这种情况。 有什么想法吗?
编辑 2: 我猜bounce属性大概是UIScrollView的边缘, 但是当从一个页面移动到另一个页面时,也会出现弹跳。 有时我可以看到一点下一页。 例如 : 从第 2 页滑动到第 3 页,在滑动的动画中我可以看到 0.1 秒的第 4 页。
此外,滑动的动画不是恒定的。并且感觉每次滑动都没有什么不同。 提前致谢。
【问题讨论】:
“页面间跳转”是什么意思?弹跳的重点是当用户到达滚动视图的任何边缘时“弹跳”,在 pagingEnabled 滚动视图中页面之间没有弹跳。 如果我在滚动视图中有 10 个“页面”.. 当我从第 2 页滑动到第 3 页时(例如),我会随机得到以下结果:-第 3 页到达的边框几乎没有“反弹” (来回走动)-第 3 页到达是边界,在反弹之前我几乎看不到第 4 页-第 3 页到达是边界并再次停止(这就是我想要的),滑动的动画不是恒定的,并且它不是 UI 友好的。希望我在这里很清楚。 行为取决于你在释放前拖动了多少,检查滚动委托方法看你是否可以更详细地控制它 嗨 perr200。我也遇到了同样的问题,请问您找到解决办法了吗? 你好,你使用XLPagerTabStrip
框架吗?我有这个问题,但可以简单地解决。
【参考方案1】:
这样做:
_scrollView = [[UIScrollView alloc]init];
_scrollView.pagingEnabled = YES;
_scrollView.bounces = NO; //Here
那么,不要再反弹了!
【讨论】:
【参考方案2】:如果您为 UIScrollView 设置委托,当用户将手指从屏幕上移开时,委托将收到 scrollViewWillBeginDecelerating:
。您也许然后可以使用 UIScrollView 的 setContentOffset:animated:
方法控制以滚动最近的页面到视图中,或者使用 animateWithDuration:animations:
方法设置您自己的动画 - 我不确定您是否不过,自己的动画将优先于正在进行的减速。
您也可以将UIScrollView的decelerationRate
设置为UIScrollViewDecelerationRateFast
,这样可以使这种情况下的滚动更加一致。
【讨论】:
【参考方案3】:将滚动条的反弹属性设置为false/no....之后它不会反弹...尝试一下希望您能得到您的解决方案....
【讨论】:
以上是关于无法使用 UIScrollView 和 pagingEnabled=YES 禁用反弹的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIScrollView 和 AutoLayout 以编程方式创建控制器无法正确调整视图大小
无法使用 Autolayout 正确构建 UIScrollView