【问题标题】:How to make infinite scroll view in iPhone?如何在 iPhone 中制作无限滚动视图?
【发布时间】:2012-08-05 10:52:18
【问题描述】:

我有一个scrollview,有 5 个宽度为 88 的图像视图

我希望scrollview 滚动到每个图像视图(非分页)

我想在 iPhone 中制作一个无限滚动视图,这意味着当它滚动到最后一个项目时,它会在它旁边显示第一个项目..

我一直在尝试按偏移量,但是当按偏移量移动它时它会停止,而且 我使用了苹果街道滚动条,它不允许我将每个元素停止在中心(就像选择器视图).. >

【问题讨论】:

标签: iphone objective-c ios ios5


【解决方案1】:

首先,我建议使用 UITableView,这样您就可以保持较低的内存使用率。我在一个项目中成功使用的方法如下:

    1。列表项

复制单元格的内容,我的意思是如果你有 5 个这样的项目:

| 1 | 2 | 3 | 4 | 5 |

您应该在表格末尾添加相同的内容(在具有可重用引擎的表格视图中,这不是什么大问题),以便看起来像这样:

| 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 |

    2。修改 scrollViewDidScroll 如下:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == _yourScrollView) {
        CGFloat currentOffsetX = scrollView.contentOffset.x;
        CGFloat currentOffSetY = scrollView.contentOffset.y;
        CGFloat contentHeight = scrollView.contentSize.height;

        if (currentOffSetY < (contentHeight / 6.0f)) {
            scrollView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY + (contentHeight/2)));
        }
        if (currentOffSetY > ((contentHeight * 4)/ 6.0f)) {
            scrollView.contentOffset = CGPointMake(currentOffsetX,(currentOffSetY - (contentHeight/2)));
        }
    }
}

如果您几乎到达滚动的最后,上面的代码将滚动位置移动到顶部;或者,如果您几乎在顶部,则将您移至底部...

    3。就是这样。

【讨论】:

  • 很好的解决方案。但是,当偏移量发生变化时,有什么办法可以省略这个“闪烁”?
【解决方案2】:

您可以查看以下两个选项之一:

【讨论】:

  • 高级滚动视图技术是解决此问题的项。
【解决方案3】:

这给我带来了很长一段时间的严重问题,所以我真的感受到了你的痛苦。我发现这个控件应该可以解决你的问题:http://www.cocoacontrols.com/platforms/ios/controls/infinitescrollview

我还考虑过插入过渡和禁用滚动,使其变得像幻灯片,但任何一种方式都应该有效。

【讨论】:

    【解决方案4】:

    这里是我曾经这样做的解决方案的简短说明。

    假设您有从 0 到 9 的计数器,然后,当您进行转换 9 -> 0 时,实际上您在 9 之后(在 scrollView 中)欺骗了另一个 0(称为 0'),动画转换到 0',然后使非动画即时过渡到位于 scrollView 顶部的 0。

    【讨论】:

      【解决方案5】:

      您可以为此使用 iCarousel 库。 https://github.com/nicklockwood/iCarousel

      【讨论】:

        【解决方案6】:

        对于其他正在寻找解决方案的人,您还可以在https://github.com/Seitk/InfiniteScrollPicker/ 尝试这个库 Infinite Scroll Picker,它基本上是拖放。我在一个项目中使用它,效果很好。

        【讨论】:

          【解决方案7】:

          在这个迷你项目中实现了一个简单的无限滚动:

          https://github.com/mcmatan/Infinity-tabBar-scroll-view/blob/master/README.md

          【讨论】:

            猜你喜欢
            • 2013-10-28
            • 2020-06-22
            • 1970-01-01
            • 1970-01-01
            • 2023-03-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多