我知道文档中的建议是,如果您正在做“像网格或基于行的中断布局”之类的事情,就应该使用UICollectionView_Flow_Layout。然而,我不确定我的情况是否如此。
我想要一个网格,但做,而不是,想要一个断线布局。物品的排列应该是无限的,无论是水平的还是垂直的,不要堆叠。本质上,一个巨大的棋盘,如果内容超出了框架,就会水平或垂直滚动。
要子类UICollectionView_Flow_Layout,我必须:
prepareLayout以阻止布局从包装项中删除。这似乎是一项艰巨的工作。collectionViewContentSize。苹果公司表示,他们在制作UICollectionView_Flow_Layout方面做了“很多艰苦的工作”,所以我应该尽可能地利用它。但是,如果我不得不推翻prepareLayout关闭断线,我怀疑我是扔掉了他们的大部分工作。在他们剩下的工作中,我可能不会使用其中的大部分(例如,minimumLineSpacingForSectionAtIndex)。
因为我想要的布局非常简单,所以我怀疑我应该将UICollectionViewLayout子类替换为子类,因为:
prepareLayout,而且我怀疑这是所有辛苦工作的地方。我的结论正确吗?
发布于 2013-01-22 18:27:05
无论如何,UICollectionViewFlowLayout不能支持两个方向,它只能沿着一个轴滚动,无论是水平的还是垂直的。因此,您必须对UICollectionViewLayout而不是UICollectionViewFlowLayout.进行子类分类。
然后,您必须重写prepareForLayout,layoutsAttributesForElementsInRect方法,正如您所说的正确。
发布于 2014-02-07 22:04:26
您描述的布局(以无限期长的水平线排列的项目和以无限长的垂直线排列的部分)类似于App的“特色”部分:)
我一直想在我的一些应用程序中使用类似的概念,我认为这里的诀窍是它不是由一个UICollectionView处理的。看起来,可以通过使用UITableView作为基础来实现您所要寻找的内容,并让您的内容的每个部分占据表中的单个单元格。也就是说,每个UITableViewCell都包含一个水平滚动的UICollectionView。
UICollectionView的关键限制(有时并不容易理解)是,它毕竟是一个单一的scrollView。您可以覆盖一些功能以启用双向滚动,但如果您希望某些内容以一种方式滚动,而有些内容以另一种方式滚动,则必须创建嵌套的scrollView。
https://stackoverflow.com/questions/14449283
复制相似问题