我正在尝试在用户放开手指后获取滚动UIScrollView的速度,以便在滚动视图的速度低于阈值速度时触发事件。Apple文档说明滚动视图的速度单位为“点”,我猜测这应该是每秒(pts/s),例如对于UIScrollView代理方法
因此,我会假设滚动视图减速的单位为“每秒点数平方(pts/s^2)”,但事实似乎并非如此。
以下是一些示例参数,从一个滚动视图中提取出来,即当手势事件结束时(即当您抬起手指时)从方法
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity :(CGPoint)velocity targetContentOffset :(inout CGPoint *)targetContentOffset
。因此,我会假设滚动视图减速的单位为“每秒点数平方(pts/s^2)”,但事实似乎并非如此。
以下是一些示例参数,从一个滚动视图中提取出来,即当手势事件结束时(即当您抬起手指时)从方法
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
和 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
中提取:
(初始偏移量,目标偏移量,初始速度,最终速度,减速,经过时间)=
- (364.0,2664.5,4.619940,0,0.998,3.068916)
- (2595.5,3288.5,1.398724,0,0.998,2.485449)
- (3094.5,1907.0,-2.389578,0,0.998,2.752163)
- (143.0,1275.5,2.279252,0,0.998,2.718653)
- 初始偏移 = scrollView.contentOffset.y一旦抬起手指
- 目标偏移量= targetContentOffset->y,一旦放开手指或scrollView.contentOffset.y当滚动视图停止减速时
- 初始速度 = 一旦手指离开,velocity.y即可
- 最终速度 = 0,因为让滚动视图自然滚动直到停止
- 减速度= scrollView.decelerationRate一旦手指离开
- 经过时间= 手指离开和滚动视图停止之间的时间
decelerationRate
属性不会因手势而改变。如果您没有在某个时刻明确设置它,它将始终保持为常量UIScrollViewDecelerationRateNormal
(0.998
),就像您所有的测量结果中一样。 - omz