如何创建多向无限/圆形滚动视图,如 HBO GO iPad 应用程序

Posted

技术标签:

【中文标题】如何创建多向无限/圆形滚动视图,如 HBO GO iPad 应用程序【英文标题】:How to create multidirectional infinite/circular scrolling view like the HBO GO iPad App 【发布时间】:2012-05-04 17:11:29 【问题描述】:

我的问题本质上是它在标题中所说的——我想创建一个类似于 HBO GO iPad 应用程序的“主页”选项卡下显示的滚动视图。

我研究了圆形/无限 UIScrollViews,但它们只讨论一个方向(水平或垂直)的无限内容,并且当滚动速度太高时会引发许多问题。所以我的问题是双重的:

A) 他们可以通过继承 UIScrollView 来创建这个滚动视图吗?如果是这样,请让我知道如何?

B) 如果没有,是否有人对他们如何创建它的起点有想法?即使在快速加速的情况下,它也运行得非常非常平稳,我正试图弄清楚他们是如何创造这个的。

提前致谢!

【问题讨论】:

您是否考虑过设置一个 3x3 的网格,所有内容都相同(如果您的内容足够大,可能是 2x2)并根据滚动来简单地移动视图?有点像this video by Apple 中的照片逻辑,但同时处理了两个方向?这就是我认为他们正在这样做的方式。 mbm,谢谢——感谢您为我指明这个方向。如果我在水平和垂直方向上使用它,您链接到我的视频似乎会做我想做的事,但对于我的生活,我无法在任何地方找到示例代码。你能指点我那个方向,以及提到的其他解释平铺的苹果视频的方向吗?如果你能做到这一点,我想我就能得到这个工作。然后,如果您重新发布作为答案,我很乐意接受:) 样本名为StreetScroller。 【参考方案1】:

转发以获得答案;-)

样本名为StreetScroller。

参考视频是here。

我相信成功的技术是在 2x2 或 3x3 网格中应用视频中的技术并处理双向滚动。

【讨论】:

非常感谢!我想我已经弄清楚了我所遇到的困惑——你建议的解决方案是制作一个由 8 个横向和 4 个向下的较小视图组成的 UIView(在我的情况下可能是一个 8x4 网格),并且每次滚动时,我都会创建整个网格的另一个实例并将其添加到视图中,而不仅仅是网格的许多较小部分是可见的? 我认为你可以做的比这少。它可能会或可能不会无缝工作,但我认为您可以使用 Apple 重置 contentOffset 的技巧来保持“重新居中”视图,但用户不知道。 啊,但是看,为了争论,假设我们有一个 2x2 的网格占据了整个屏幕...我将滚动视图向下拖动,以便只显示底部两张图片的一半。屏幕顶部会显示什么?我不能将底部图像移动到屏幕顶部,因为那样底部就会有空白空间。因此,以某种方式,我需要创建至少两个网格单元实例(更多,当我们开始讨论同时水平和垂直滚动时)以无缝填充屏幕。你有什么建议? (非常感谢您的帮助!) 我认为我们在说不同的事情。 :-) 当我说 2 x 2 网格时,我的意思是整个布局的四个副本。我理解,或者看起来,您的布局是一个网格;像 8 x 4 之类的东西。我说的是其中的四个。这更有意义吗? 啊,是的。我想我们说的是同一件事,但以不同的方式表达了信号xD谢谢!我很确定这是要走的路。今天回到工作岗位,所以我将尝试在这一天结束之前让这个功能正常运行。一旦我得到它的工作,我会回来接受你的回答,我保证^^谢谢你的帮助! @mbm30075【参考方案2】:

我整理了一个库,可提供全方位的无限滚动视图。它使您可以非常轻松地实现您正在寻找的效果等等。当用户滚动时,框架会布置图块并让代理知道,以便它可以设置图块的演示文稿。这确实是通过子类化 UIScrollView 来完成的,就性能而言,该框架不会引入任何延迟:无论您滚动多快,都能达到 60 fps。

带有在无限滚动墙上显示 Flickr 图像的示例应用程序的框架在这​​里:https://github.com/vovagalchenko/scroll-for-days。此外,这里是示例应用的运行视频:https://cloud.box.com/s/d6bgvlot175au5a3jeh5

【讨论】:

【参考方案3】:

我不认为有一个简单的方法可以通过子类 UIScrollView 来做到这一点

我用 UIView 和自定义手势识别器做了类似的事情,移动视图很好,它们从屏幕一侧消失。

希望对你有帮助。

【讨论】:

Jason,我可以提供更多信息吗?您是否有为实现这一目标所采取的步骤流程,或一些示例代码?

以上是关于如何创建多向无限/圆形滚动视图,如 HBO GO iPad 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何实现无限滚动列表视图

如何制作弯曲的圆形滚动视图

如何为无限滚动的 RecyclerView 绘制背景

颤动中的多向滚动

滚动圆形布局集合视图

MVVMCross:如何制作无限滚动视图并下推刷新视图?