如何为UIScrollView物理添加一些额外的拖动。它的滚动速度只是我正在做的事情。 (我不想完全禁用,当你到达视图的结尾或开始时,我仍然喜欢橡皮筋效果。)有什么方法可以减慢速度吗?
答案 0 :(得分:19)
实际上,在阅读文档之后,我发现UIScrollView的属性会减慢滚动速度,因此Apple确实可以让其他任何人都可以随时查找:
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
即使速度很快,它也会加速减速,这实际上会减慢向下滚动的速度。这正是我所需要的。而且不用担心专利。 :)
答案 1 :(得分:3)
实际上,您可以使用ScrollToRowAtIndexPath
生成块动画:...动画设置为NO
。这样块动画将使用选定的时间手动设置底层变量的动画。
答案 2 :(得分:1)
由于UICollectionView
是UIScrollView
的子类,您可以使用滚动视图委托方法。
- (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;
}
答案 3 :(得分:0)
现在根本不可能。也许Apple有一天会扩展API以允许它,但直到那天,你仍然坚持使用默认速度。
唯一的另一种选择是您自己的滚动实现。如果您想要所有漂亮的抛光,例如橡皮筋效果以及滚动将水平或垂直锁定的方式,这并非易事。更不用说轻弹滚动了。
此外,Apple拥有一些滚动行为的专利,因此编写自己的行为甚至可能是危险的。来源:"Apple's touch-screen patent"。
一种计算设备,包括:触摸屏显示器;一个或多个处理器;记忆;一个或多个程序,其中所述一个或多个程序存储在所述存储器中并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括:用于利用所述触摸屏显示器检测一个或多个手指接触的指令;用于将一个或多个启发法应用于一个或多个手指接触以确定用于该设备的命令的指令;以及处理命令的说明;其中,所述一个或多个启发法包括:垂直屏幕滚动启发式,用于确定所述一个或多个手指接触对应于一维垂直屏幕滚动命令而不是基于初始角度的二维屏幕翻译命令手指接触相对于触摸屏显示器的移动;用于确定一个或多个手指接触对应于二维屏幕翻译命令的二维屏幕翻译启发法,而不是基于手指接触相对于手指接触的初始移动角度的一维垂直屏幕滚动命令。触摸屏显示;以及下一项启发法,用于确定一个或多个手指接触对应于从显示一组项目中的相应项目转换到显示该项目组中的下一项目的命令。
但当然,我不是律师。