iOS 如何计算滚动条的拇指位置和范围?

发布于 2025-01-03 11:47:48 字数 879 浏览 1 评论 0原文

最近我比较了 Android 和 iOS 之间滚动条中拇指的行为。我发现以下内容:

  1. 有两种类型可以计算 Android 中拇指的偏移量和范围(由 android:smoothScrollbar 属性或 setSmoothScrollbarEnabled 方法)。
  2. 如果 smoothScrollbarfalse,则滚动时拇指看起来不连续。
  3. 如果 smoothScrollbartrue,则拇指看起来很平滑,但如果项目的高度不同,则滚动时其范围会有所不同。
  4. 不过,iOS 中的拇指要好得多。看起来相当光滑,程度也没有变化。

在Android中,计算偏移量和范围的方法可以在 AbsListView 中找到。但是,我不知道这些值在 iOS 中是如何计算的。有人可以帮忙吗?

Recently I compared the behavior of the thumb in a scrollbar between Android and iOS. I found the following:

  1. There are two types to compute the thumb's offset and extent in Android (controlled by android:smoothScrollbar attribute or setSmoothScrollbarEnabled method).
  2. If smoothScrollbar is false, the thumb looks discontinuous when scrolling.
  3. If smoothScrollbar is true, the thumb looks smooth, but it's extent varies when scrolling if the items' height are different.
  4. However, the thumb in iOS is much better. It looks quite smooth, and the extent does not change.

In Android, the method to compute the offset and extent could be found in AbsListView. However, I do not know how those values are compited in iOS. Can anyone help?

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

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

发布评论

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

评论(1

半葬歌 2025-01-10 11:47:48

对于内容偏移,请使用 self.scrollView.contentOffset
对于框架值(包括宽度),请使用 self.scrollView.frame.size.(<>); [宽度,高度],self.scrollview.bounds;self.scrollview.frame.origin.(<>); [x,y]

如果您想收到滚动事件的通知,请成为滚动视图的委托。

编辑

以下是委托方法:

响应滚动和拖动

– scrollViewDidScroll:
– scrollViewWillBeginDragging:
– scrollViewWillEndDragging:withVelocity:targetContentOffset:
– scrollViewDidEndDragging:willDecelerate:
– scrollViewShouldScrollToTop:
– scrollViewDidScrollToTop:
– scrollViewWillBeginDecelerating:
– scrollViewDidEndDecelerating:

管理缩放

– viewForZoomingInScrollView:
– scrollViewWillBeginZooming:withView:
– scrollViewDidEndZooming:withView:atScale:
– scrollViewDidZoom:

响应滚动动画

– scrollViewDidEndScrollingAnimation:

For content offset, use self.scrollView.contentOffset.
For frame values (including width), use self.scrollView.frame.size.(<>); [width, height], self.scrollview.bounds; or self.scrollview.frame.origin.(<>); [x,y].

If you want to be notified of scroll events, become the scrollview's delegate.

EDIT

Here are the delegate methods:

Responding to Scrolling and Dragging

– scrollViewDidScroll:
– scrollViewWillBeginDragging:
– scrollViewWillEndDragging:withVelocity:targetContentOffset:
– scrollViewDidEndDragging:willDecelerate:
– scrollViewShouldScrollToTop:
– scrollViewDidScrollToTop:
– scrollViewWillBeginDecelerating:
– scrollViewDidEndDecelerating:

Managing Zooming

– viewForZoomingInScrollView:
– scrollViewWillBeginZooming:withView:
– scrollViewDidEndZooming:withView:atScale:
– scrollViewDidZoom:

Responding to Scrolling Animations

– scrollViewDidEndScrollingAnimation:
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文