0

我有一个带有图像网格的 UIScrollView。目前他们只有6个,但有一天可能会有几百个。因此,在 UIScrollView 中创建几百个 UIImageView 对象并用图像数据填充它们当然是个坏主意。我想我是在 Apple 文档的某个地方读到的:他们建议只创建需要填充可滚动可见区域的 mutch 元素。

但如果我立即重新定位 UIImageView 元素,我担心会出现性能问题。我认为。当用户开始向下滚动时(假设它从 0,0 开始),我必须重新定位那些超出顶部可见区域的 UIView 对象,将它们快速定位到底部,然后分配非常(!! ) 快速将新图像对象添加到该行中的 UIImageViews。我的意思是......如果用户开始像野生瞪羚一样滚动,越来越快怎么办?

你这样做的方法是什么?

4

2 回答 2

1

UIScrollView(或者实际上是 UIKit)非常擅长不重绘不变的东西。如果您只移动(或移除以回收)屏幕(或剪辑)视图,您将不会导致重绘。同上在屏幕外添加子视图。

如果您没有启用分页,您可能需要实现一些 UIView 提供的更快的绘图代码。不过我会先测试一下——iPhone 的物理限制在一定程度上限制了滚动。

于 2009-05-05T18:54:44.797 回答
1

在类似但规模较小的情况下,我通过加载超出滚动视图维度所需的数量来处理这个问题,但不是整个数据集。我只是水平滚动,我发现在当前可见的图像的每一侧加载 1 或 2 个图像可以让事情变得流畅。当只有 1 个可见时,它仍然会加载 3 或 5 个图像,但这比加载数十个图像要好得多。您需要进行一些试验,以了解您需要在可见区域周围允许多少坡度。

动态加载/卸载图像最好在滚动视图的委托方法中处理。

于 2009-05-05T19:06:58.090 回答