8

我需要在 iPhone 上创建一个水平滚动图像库的视图。问题是这个画廊有可能需要呈现 100 到 1000 幅图像,所以我想避免一次将它们全部加载到单个 UIScrollView 中并破坏性能。我需要创建一个视图来回收视图对象(如 UITableView)以提高性能并减少内存开销,但它需要以水平方式滚动。

有任何想法吗?是否可以横向进行 UITableView 操作?

谢谢!

4

6 回答 6

2

您可以使用大滚动视图,并监视滚动位置的变化。您可以在图像进入实际可视区域时将它们添加为子视图,并在它们滚动时将其删除。

这样,您只需要在任何给定时间出现少量图像视图,但您可以让它们看起来都“在那里”。

您甚至可以通过更改图像和位置来回收图像视图,这样您就不会创建和破坏复杂的对象。这就是 UITableView 对单元格所做的事情。

于 2010-04-23T22:44:31.587 回答
2

它就像应用变换一样简单。

这是代码。在你的 tableViewController 初始化中写下这个:

self.view.frame = CGRectMake(100,-5,250,350); //any Frame of your choice
CGAffineTransform trans = self.view.transform; // get current transform (i.e. portrait)
trans = CGAffineTransformRotate(trans, (M_PI / -2.0)); // rotate 90 degrees to go landscape
self.view.transform = trans; // set current transform (landscape)

但是现在你需要意识到你的轴也被交换了。您对高度所做的任何更改都会更改宽度(反之亦然),对 origin.x 所做的任何更改都会更改 origin.y(反之亦然)

于 2011-05-06T00:39:53.880 回答
0

我同意mbmcavoy,你也可以看看iPhone/iPad – AppStore like UIScrollView with paging and preview这篇文章解释了你对 UIScrollView 的需求,并提供了一个很好的例子和源代码。

问候

于 2010-08-27T06:17:22.100 回答
0

是否可以水平添加 UITableView?与屏幕方向不同。然后,您可以使用常规 UITableView 语义,其中每一行都是水平滚动而不是垂直滚动的图像。

于 2011-02-26T15:15:52.667 回答
0

由于验证的答案不正确,因此在此旧线程上发布答案。您可以使用 UITableViewController 及其 dequeueReusableCellWithIdentifier 内置功能。

诀窍是让你的表格视图旋转,然后让你的单元格向相反的方向旋转。

在 viewDidLoad 你将添加:

self.view.transform = CGAffineTransformMakeRotation(-M_PI_2);

然后在 cellForRowAtIndexPath 你会使用:

cell.containerView.transform = CGAffineTransformMakeRotation(M_PI_2);

确保将单元格的每个内容都添加到容器视图(在此示例中为containerView),这样您只需旋转容器而不是每个单元格子视图。

另请注意,它会更好地用于具有方形尺寸的单元格,否则您可能会在计算高度/宽度时遇到困难。

于 2014-10-28T03:39:27.963 回答
-1

我想我有答案关于UITableView水平滚动:

  1. 创建一个UIScrollView(并禁用垂直滚动)
  2. UITableView在滚动视图中放置一个
  3. 根据需要更改表格视图宽度并将其更新为表格视图 UIScrollView.contentSize宽度
于 2011-03-01T17:56:03.547 回答