我需要在 iPhone 上创建一个水平滚动图像库的视图。问题是这个画廊有可能需要呈现 100 到 1000 幅图像,所以我想避免一次将它们全部加载到单个 UIScrollView 中并破坏性能。我需要创建一个视图来回收视图对象(如 UITableView)以提高性能并减少内存开销,但它需要以水平方式滚动。
有任何想法吗?是否可以横向进行 UITableView 操作?
谢谢!
我需要在 iPhone 上创建一个水平滚动图像库的视图。问题是这个画廊有可能需要呈现 100 到 1000 幅图像,所以我想避免一次将它们全部加载到单个 UIScrollView 中并破坏性能。我需要创建一个视图来回收视图对象(如 UITableView)以提高性能并减少内存开销,但它需要以水平方式滚动。
有任何想法吗?是否可以横向进行 UITableView 操作?
谢谢!
您可以使用大滚动视图,并监视滚动位置的变化。您可以在图像进入实际可视区域时将它们添加为子视图,并在它们滚动时将其删除。
这样,您只需要在任何给定时间出现少量图像视图,但您可以让它们看起来都“在那里”。
您甚至可以通过更改图像和位置来回收图像视图,这样您就不会创建和破坏复杂的对象。这就是 UITableView 对单元格所做的事情。
它就像应用变换一样简单。
这是代码。在你的 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(反之亦然)
我同意mbmcavoy,你也可以看看iPhone/iPad – AppStore like UIScrollView with paging and preview这篇文章解释了你对 UIScrollView 的需求,并提供了一个很好的例子和源代码。
问候
是否可以水平添加 UITableView?与屏幕方向不同。然后,您可以使用常规 UITableView 语义,其中每一行都是水平滚动而不是垂直滚动的图像。
由于验证的答案不正确,因此在此旧线程上发布答案。您可以使用 UITableViewController 及其 dequeueReusableCellWithIdentifier 内置功能。
诀窍是让你的表格视图旋转,然后让你的单元格向相反的方向旋转。
在 viewDidLoad 你将添加:
self.view.transform = CGAffineTransformMakeRotation(-M_PI_2);
然后在 cellForRowAtIndexPath 你会使用:
cell.containerView.transform = CGAffineTransformMakeRotation(M_PI_2);
确保将单元格的每个内容都添加到容器视图(在此示例中为containerView),这样您只需旋转容器而不是每个单元格子视图。
另请注意,它会更好地用于具有方形尺寸的单元格,否则您可能会在计算高度/宽度时遇到困难。
我想我有答案关于UITableView
水平滚动:
UIScrollView
(并禁用垂直滚动)UITableView
在滚动视图中放置一个UIScrollView.contentSize
宽度