iPhone UIScrollView,减慢滚动

Posted

技术标签:

【中文标题】iPhone UIScrollView,减慢滚动【英文标题】:iPhone UIScrollView, Slow down the scrolling 【发布时间】:2010-04-15 08:06:52 【问题描述】:

如何向 UIScrollView 物理添加一些额外的拖动。对于我正在做的事情,它的滚动速度有点太快了。 (我不想完全禁用,当您到达视图的末尾或开头时,我仍然喜欢橡皮筋效果。)有什么办法可以减慢它的速度?

【问题讨论】:

【参考方案1】:

实际上,在阅读了文档后,我发现了 UIScrollView 的属性会减慢滚动速度,因此 Apple 确实为寻找此功能的其他人提供了此功能:

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

尽管它说得很快,但它正在加速减速,这实际上减慢了向下滚动的速度。这正是我所需要的。而且不用担心专利。 :)

【讨论】:

【参考方案2】:

实际上,您可以使用ScrollToRowAtIndexPath:... 制作块动画,并将动画设置为NO。这种方式块动画将使用选定的时间手动为底层变量设置动画。

【讨论】:

【参考方案3】:

由于UICollectionViewUIScrollView 的子类,您可以使用滚动视图委托方法。

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset 
    targetContentOffset->x = (targetContentOffset->x - scrollView.contentOffset.x) / 6 + scrollView.contentOffset.x;
    targetContentOffset->y = (targetContentOffset->y - scrollView.contentOffset.y) / 6 + scrollView.contentOffset.y;   

【讨论】:

【参考方案4】:

目前这根本不可能。也许 Apple 有一天会扩展 API 以允许它,但在那一天之前,你会被默认速度卡住。

唯一的其他选择是您自己的滚动实现。如果您想要所有漂亮的修饰,例如橡皮筋效果和滚动水平或垂直锁定的方式,这并不是微不足道的。更不用说轻弹滚动了。

此外,Apple 对其中一些滚动行为拥有专利,因此编写自己的滚动行为甚至可能很危险。来源:"Apple's touch-screen patent"。

一种计算设备,包括:触摸屏显示器;一个或多个处理器;记忆;以及一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括: 用于检测与所述触摸屏显示器的一个或多个手指接触的指令;用于将一种或多种试探法应用于一个或多个手指接触以确定用于设备的命令的指令;以及处理命令的指令;其中,所述一个或多个启发式包括: 垂直屏幕滚动启发式,用于基于初始角度确定所述一个或多个手指接触对应于一维垂直屏幕滚动命令而不是二维屏幕平移命令手指接触相对于触摸屏显示器的移动;二维屏幕平移启发式,用于基于手指接触相对于屏幕的初始移动角度确定一个或多个手指接触对应于二维屏幕平移命令而不是一维垂直屏幕滚动命令触摸屏显示;以及用于确定一个或多个手指接触对应于从显示一组项目中的相应项目到显示该组项目中的下一个项目的命令的下一个项目启发式。

当然,我不是律师。

【讨论】:

以上是关于iPhone UIScrollView,减慢滚动的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 的自动滚动

(iphone) uiscrollview 触摸。取消内容触摸并开始滚动

iPhone:在嵌入式 UITextView 中输入文本时滚动 UIScrollview

在 iphone 中使用 UIScrollView 滚动图像

iPhone + UIScrollView

在 iPhone 中使用 UIScrollView 和 ImageView 滚动图像