UICollectionView 或 UITableView 大于屏幕大小

Posted

技术标签:

【中文标题】UICollectionView 或 UITableView 大于屏幕大小【英文标题】:UICollectionView or UITableView to be more than screen size 【发布时间】:2013-04-22 03:46:20 【问题描述】:

我需要显示一个数据表;行和列。我认为 UICollectionView 会解决我的问题并求助于它,而不是使用 UITableView。 UICollectionView 的 flowLayout(开箱即用的布局)确实显示不止一列数据。但是我可以让它显示超过一个屏幕宽度的内容吗?比如说,我想让 UICollectionView 显示 3 个屏幕宽度的数据(例如,对于 iPhone,它是 320*3=960px)?默认情况下,UICollectionView 的 FlowLayout 似乎会在屏幕宽度处中断数据显示并继续在下一行显示其余部分。现在,我不希望它在页面宽度的末尾中断,而是在 (3 * page-width) 的末尾。

我尝试了什么: 我将 CollectionView 放在 UIScrollView 中,并将滚动视图的宽度设置为 3*page-width,如下所示:

[self.scrollView setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].width*3.0, [[UIScreen mainScreen] bounds].size.height)];

当我运行应用程序时,页面确实显示了 3*page-width 的宽度。我能够很好地水平滚动。但是,UICollectionView 数据仍然在一个 page-wdith 处中断并继续显示下一行(这意味着它不将滚动视图的宽度视为其宽度;而是继续将页面宽度视为其宽度)。

请提供您的建议/cmets。会有很大帮助的!

【问题讨论】:

【参考方案1】:

您应该能够只更改滚动方向,以便流布局将水平滚动而不是垂直滚动:

UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;

您也可以直接在 Interface Builder 中进行设置。

【讨论】:

谢谢!我从这个开始,但是当我读到创建自定义 UICollectionViewLayout 将是很多工作时暂停了。所以,我认为如果对 UICollectionViewFlowLayout 进行一些调整来获得相同的结果会更好,而不是仅仅因为无法调整一个属性而编写自定义布局!您是否尝试过编写自定义 CollectionViewLayout?是不是太乱了? @Jean 我用更好的解决方案更新了答案,不使用自定义布局,而是修改流布局。

以上是关于UICollectionView 或 UITableView 大于屏幕大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在xamarin中做一个水平的tableview

处理 UICollectionView 单元格上的滑动:在 UICollectionView 或每个单元格上实现处理程序?

UICollectionView 或 UITableView 大于屏幕大小

UICollectionView 的补充视图或装饰视图的 indexpath 是啥?

停止滚动时获取 UICollectionView 的项目(或索引)

我应该使用啥,UITableView 或 UICollectionView? [关闭]