iPhone水平滚动表

时间:2010-04-23 22:30:39

标签: iphone uitableview uiscrollview horizontal-scrolling

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

有什么想法吗?是否可以水平进行UITableView操作?

谢谢!

6 个答案:

答案 0 :(得分:2)

您可以使用大型滚动视图,并监视要更改的滚动位置。您可以将图像作为子视图添加到实际可视区域中,并在滚动它们时将其删除。

这样,您只需要在任何给定时间显示少量图像视图,但是您可以将它们的外观全部显示为“那里”。

您甚至可以通过更改图像和位置来回收图像视图,这样您就不会创建和销毁复杂对象。这就是UITableView对单元格的作用。

答案 1 :(得分:2)

就像改编变换一样简单。

这是代码。在你的tableViewController init中写下这个:

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(反之亦然)

答案 2 :(得分:0)

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

此致

答案 3 :(得分:0)

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

答案 4 :(得分:0)

发布此旧线程的答案,因为验证的答案不正确。您可以使用UITableViewController及其dequeueReusableCellWithIdentifier内置功能。<​​/ p>

诀窍是让你的桌面旋转然后让你的单元格反方向旋转。

在viewDidLoad中你将添加:

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

然后在cellForRowAtIndexPath中使用:

cell.containerView.transform = CGAffineTransformMakeRotation(M_PI_2);

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

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

答案 5 :(得分:-1)

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

  1. 创建UIScrollView(并禁用 垂直卷轴)
  2. 在卷轴中放置UITableView
  3. 改变表视图​​宽度 希望并更新 UIScrollView.contentSize作为 tableView width