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 大于屏幕大小的主要内容,如果未能解决你的问题,请参考以下文章
处理 UICollectionView 单元格上的滑动:在 UICollectionView 或每个单元格上实现处理程序?
UICollectionView 或 UITableView 大于屏幕大小
UICollectionView 的补充视图或装饰视图的 indexpath 是啥?