UIAccelerometer 和 UIScrollView

发布于 2024-09-13 19:51:13 字数 265 浏览 2 评论 0原文

我想根据 UIAccelerometer 值滚动滚动视图。实现这一目标的最佳方法是什么?

最初,我根据获得的加速度计值将内容偏移设置为一个值。然后,在每个 scrollViewDidEndAnimating 上,我再次根据加速度计值设置内容偏移量。我知道 setContentOffset 实际上以均匀的速度滚动滚动视图,没有任何加速。然而,这种机制在滚动滚动视图时似乎非常不稳定。

任何想法将不胜感激。

感谢和问候

I want to scroll a scrollview based on the UIAccelerometer values. What is the best way to accomplish this?

Initially I set the content offset to a value based on the accelerometer values I get. Then on each scrollViewDidEndAnimating, I again set the content offset based on the acceleromter values. I understand that setContentOffset actually scrolls the scrollview with a uniform velocity without any acceleration. However this mechanism seems to be very jerky in scrolling the scrollview.

Any ideas will be appreciated.

Thanks and Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

扮仙女 2024-09-20 19:51:13

我这样做过一次。 sv 是滚动视图。

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    if (sv.tracking || sv.decelerating) return;
    CGPoint pt = sv.contentOffset;
    pt.x += acceleration.x * 2;
    pt.y -= acceleration.y * 2;
    if (pt.x < 0) pt.x = 0;
    if (pt.x > sv.contentSize.width - sv.frame.size.width) pt.x = sv.contentSize.width - sv.frame.size.width;
    if (pt.y < 0) pt.y = 0;
    if (pt.y > sv.contentSize.height - sv.frame.size.height) pt.y = sv.contentSize.height - sv.frame.size.height;
    sv.contentOffset = pt;
}

I did this once. sv is the scroll view.

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    if (sv.tracking || sv.decelerating) return;
    CGPoint pt = sv.contentOffset;
    pt.x += acceleration.x * 2;
    pt.y -= acceleration.y * 2;
    if (pt.x < 0) pt.x = 0;
    if (pt.x > sv.contentSize.width - sv.frame.size.width) pt.x = sv.contentSize.width - sv.frame.size.width;
    if (pt.y < 0) pt.y = 0;
    if (pt.y > sv.contentSize.height - sv.frame.size.height) pt.y = sv.contentSize.height - sv.frame.size.height;
    sv.contentOffset = pt;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文