【问题标题】:How can you make a UIPageControl/UIScrollView loop around你怎么能做一个 UIPageControl/UIScrollView 循环
【发布时间】:2023-03-17 11:44:01
【问题描述】:

我通过重复的NSTimer 以编程方式浏览图像,当触发时我设置页面控件的当前页面和滚动视图的currentOffset

当我到达最后一张图片时,我将页面控件的当前页面设置回0,滚动视图的currentOffset 也设置回0。然而,这具有将事情快速倒退到开始的效果,而不是给人以前进的印象。 除了使用iCarousel 之类的东西之外,有没有一种快速简便的方法来做到这一点?

【问题讨论】:

    标签: ios objective-c uiscrollview nstimer uipagecontrol


    【解决方案1】:

    对于任何“无限”滚动,您只需要它显示三个项目。

    上一项。 当前项目。 下一项。

    如果您有一个包含 5 个项目的数组并且您希望它无限滚动,那么您首先显示...

    5、1、2(中间始终是当前项)。

    如果用户随后滑动查看数字 2,那么一旦完成滚动,您就将数字 2 放在中间,就像这样...

    1,2,3 然后改变视图的偏移量,让它回到中间。

    即你总是先出去然后再回到中间。

    【讨论】:

      【解决方案2】:

      不确定这是否适合您的需求,但您也可以将第一张图片添加到 UIScrollView 的末尾。

      当您点击最后一张图片时,您可以将滚动视图的内容偏移设置回 0(没有动画)并更新您的页面控件。

      【讨论】:

      • 我认为沿着这些思路可能会起作用,但问题是如果没有动画,用户体验就会不连续(因为之前的图像是动画的)。所以我尝试先将内容偏移设置为最后一个复制的带有动画的图像,然后将内容偏移设置为 0 而没有动画。然而这不起作用,不过我会做更多的实验。
      • 这就是为什么要将第一张图片也添加到滚动视图的末尾,所以当内容偏移量设置回 0 时,下一张图片将再次动画
      • 我试过了,还是不行。如果我不断添加新的子视图(同时删除旧的子视图)并不断增加框架,我将能够让事情正常工作,即框架的 y 值只会增加并且永远不会回到 0。这将起作用,但如果限制y 的整数值范围达到了它需要在没有动画的情况下回滚。
      • 我目前正在试验不断增加的 x 内容偏移量(当我说 y 时,这是上面的一个错字),同时也在你的方法的变体中,在开始和后面都有一个重复用于双向滚动。我认为您的方法会起作用,但首先需要滚动到带有动画的最后一个项目,然后只有当该动画完成时才滚动到没有动画的开头。一旦我有满意的东西,我会提供更新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多