【问题标题】:Create an omnidirectional scrollview创建全向滚动视图
【发布时间】:2012-02-21 14:37:50
【问题描述】:

我想创建一个全向滚动视图,其工作方式与“声音墙”应用中的滚动视图非常相似。例如,用户应该能够拉向任何方向并且永远不会到达终点。我希望保持移动顺利(并且不会像在标准滚动视图中那样看到页面更改)。有谁知道如何做到这一点?或者我需要 OpenGL 吗?

【问题讨论】:

  • 告诉我们更多关于您需要显示的内容是什么。它只是图像的递归还是其他什么?
  • 视图将使用一些图像(来自 URL)进行初始化,当用户将其移动到任何方向时,将加载来自该 URL 的更多图像。一直以来,图像都会有所不同。
  • 您可以尝试使用 ScrollView 的代理之一,例如 scrollViewWillBeginDragging 来确定 scrollView 的内容偏移量是否接近它的大小,如果是,则扩展它。
  • 这不会让我在某个时候没有内存吗?不能在当前位置重新初始化它吗?

标签: objective-c ios opengl-es uiscrollview


【解决方案1】:

创建一个 3x3 的视图网​​格,每个视图的大小都是视口的大小。当滚动视图移动到另一个部分时,重新排列视图以不断地将视口放在中心。在大多数情况下 3x3 就足够了,但如果重绘视图代价高昂,您可能需要使用更大的网格(例如 5x5)。这需要您有某种机制将您的完整视图拆分为图块。

如果您愿意,可以使用CALayer 实现相同的功能。如果你这样做,你应该考虑改用CATiledLayer。请参阅 Matt Long 在CIMGF 上的快速介绍。

【讨论】:

  • 所以你是说我应该创建一个由 9 个 UIViews/UIImageViews 组成的 960x2880 滚动视图,然后在用户移出视图时重绘它们?
  • 我通常会重新排列它们。如果您向右走,那么您将左侧视图移动到滚动之前的最右侧。在任何给定时间,滚动视图中只有 9 个视图,但它们一直在移动。
  • 好的,我会尝试这样做。如果我不管理,您愿意编写一些示例代码吗? :-)
  • 试一试。如果您有太多麻烦,请给我留言,详细说明您正在尝试做什么(我的电子邮件在我的个人资料中)。这是一篇有价值的博文,我周围有一些类似的代码。先看stackoverflow.com/questions/3430267/…。乍一看,Wall of Sound 应用程序看起来像 CATiledLayer。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多