【问题标题】:Circular UIScrollView圆形 UIScrollView
【发布时间】:2009-04-05 11:09:44
【问题描述】:

我有一个UIScrollView,里面有图片。当用户到达最后一张图像并滑动手指以查看下一张图像时,我想显示第一张图像。同样,当用户在第一张图像并滑动前一张图像时,我想显示最后一张图像。简而言之,这将是一种循环。

我该如何实现?

【问题讨论】:

    标签: iphone objective-c uiscrollview


    【解决方案1】:

    您需要使用 contentOffset 和 contentSize。

    每次有滚动事件时,您可以考虑检查用户是否在说 currentLength - 1,如果是,则将图像动态添加到滚动视图。

    这应该适用于 5 岁,但如果您不发布早期图像,可能会在内存方面遇到麻烦。

    我认为此解决方案不适用于索引小于 0 的图像。

    另外... 假设您有图像 I1 到 I5。 使用以下图像布局滚动视图: I5 I1 I2 I3 I4 I5 I1

    自动滚动到 I1(I5 的高度),没有动画。

    如果用户滚动到此标记之上,则将它们(无动画)自动滚动到第二个 I5 I1 对。 如果用户试图在接近尾声的 I5 下方滚动,您可以将它们自动滚动回第一个 I5 I1 对。 如果您在没有动画的情况下滚动并滚动到正确的高度,则会显示图像是无穷无尽的。

    我不确定这是否会非常敏感,但它可能会产生您正在寻找的效果。

    【讨论】:

    • 这几乎就是我在我的一个应用程序中所做的。它工作正常。
    • 如果您需要视图的移动是连续的,这不起作用。除非你能以特定的速度滚动到某个地方。
    【解决方案2】:

    要意识到的关键是 UIScrollView 对重绘的内容非常智能。

    您可以移动其子视图,只要屏幕上可见的视图不移动或更改,就不会重绘。您可以重置任何屏幕外子视图的框架(并在必要时调整 contentOffset)而不会导致重绘。

    当然,启用分页会使这更容易,但我相信您也可以通过 didScroll 做到这一点。

    您应该生成 5 个视图,将它们添加为子视图,并将滚动视图的偏移量设置为五个视图的中心。随着 scrollView 滚动,您可以切换子视图 - 就像循环一样。无需删除和重新添加子视图,您只需重置框架即可。

    这也是(在简单的层面上)UITableView 的工作方式——它重用了一小部分单元格视图并不断重置内容偏移量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2022-01-17
      • 2016-02-14
      相关资源
      最近更新 更多