gpt4 book ai didi

objective-c - UIScrollView 减速率和速度的单位/尺寸?

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:43 26 4
gpt4 key购买 nike

我试图在用户抬起他/她的手指后获取滚动 UIScrollView 的速度,以便在 ScrollView 的速度低于阈值速度时触发事件。

Apple 文档指出 ScrollView 速度的单位是,我猜应该是每秒 (pts/s),例如,对于 UIScrollView Delegate 方法 - ( void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset.

因此,我假设 ScrollView 的减速单位是每秒点数 (pts/s^2),但这似乎不是确实如此。

以下是从方法 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView 中提取的平移手势事件结束后(即,一旦您抬起手指)立即从滚动 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
  • Target offset = targetContentOffset->y 一旦手指被抬起或 scrollView.contentOffset.y 当 scrollview 完成减速
  • 手指一抬起,初始速度 = velocity.y
  • Final velocity = 0 因为让 scrollview 滚动直到它自然停止
  • Deceleration = scrollView.decelerationRate 手指一抬起
  • 耗时 = 从手指抬起到 ScrollView 停止的时间

最佳答案

对于您的目的而言,最重要的委托(delegate)方法可能是 scrollViewDidScroll:,因为您只是不断地不断收到该消息,包括在减速期间。与尝试提前计算相比,监视正在发生的事情对您更有用。没有有用的“ ScrollView 减速的单位”——也就是说,您没有任何信息可以让您提前计算减速过程中每一刻的速度。但是,scrollViewWillEndDragging:withVelocity:targetContentOffset: 告诉您现在的速度以及当速度为零时 ScrollView 将具有的偏移量,您现在可以询问偏移量,因此您可以决定当前偏移量和最终偏移量之间的偏移量,并在 scrollViewDidScroll: 中监视滚动的剩余部分,以了解何时传递该偏移量。当然,每次调用 scrollViewDidScroll: 时,您都可以获取时间戳,因此有了它和瞬时偏移量,以及之前所有调用的记录,很快,就有了您的瞬时速度。

关于objective-c - UIScrollView 减速率和速度的单位/尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com