首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UICollectionViewFlowLayout与子类UICollectionViewLayout

UICollectionViewFlowLayout与子类UICollectionViewLayout
EN

Stack Overflow用户
提问于 2013-01-21 23:51:49
回答 2查看 9.2K关注 0票数 16

我知道文档中的建议是,如果您正在做“像网格或基于行的中断布局”之类的事情,就应该使用UICollectionView_Flow_Layout。然而,我不确定我的情况是否如此。

我想要一个网格,但做,而不是,想要一个断线布局。物品的排列应该是无限的,无论是水平的还是垂直的,不要堆叠。本质上,一个巨大的棋盘,如果内容超出了框架,就会水平或垂直滚动。

要子类UICollectionView_Flow_Layout,我必须:

  1. 重写prepareLayout以阻止布局从包装项中删除。这似乎是一项艰巨的工作。
  2. 覆盖collectionViewContentSize

苹果公司表示,他们在制作UICollectionView_Flow_Layout方面做了“很多艰苦的工作”,所以我应该尽可能地利用它。但是,如果我不得不推翻prepareLayout关闭断线,我怀疑我是扔掉了他们的大部分工作。在他们剩下的工作中,我可能不会使用其中的大部分(例如,minimumLineSpacingForSectionAtIndex)。

因为我想要的布局非常简单,所以我怀疑我应该将UICollectionViewLayout子类替换为子类,因为:

  1. 我将使用一个布局类中的所有东西,而不是在子类和委托之间传播,实现更简单、更干净。
  2. 我不认为它会比子类UICollectionView_Flow_Layout难得多,因为在这两种情况下我都必须重写prepareLayout,而且我怀疑这是所有辛苦工作的地方。
  3. 与试图在UICollectionViewLayoutAttributes子类的基础上添加另一个杂念相比,我将能够更好地以自定义的方式调整其他UICollectionView_Flow_Layout。

我的结论正确吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-22 18:27:05

无论如何,UICollectionViewFlowLayout不能支持两个方向,它只能沿着一个轴滚动,无论是水平的还是垂直的。因此,您必须对UICollectionViewLayout而不是UICollectionViewFlowLayout.进行子类分类。

然后,您必须重写prepareForLayoutlayoutsAttributesForElementsInRect方法,正如您所说的正确。

票数 12
EN

Stack Overflow用户

发布于 2014-02-07 22:04:26

您描述的布局(以无限期长的水平线排列的项目和以无限长的垂直线排列的部分)类似于App的“特色”部分:)

我一直想在我的一些应用程序中使用类似的概念,我认为这里的诀窍是它不是由一个UICollectionView处理的。看起来,可以通过使用UITableView作为基础来实现您所要寻找的内容,并让您的内容的每个部分占据表中的单个单元格。也就是说,每个UITableViewCell都包含一个水平滚动的UICollectionView

UICollectionView的关键限制(有时并不容易理解)是,它毕竟是一个单一的scrollView。您可以覆盖一些功能以启用双向滚动,但如果您希望某些内容以一种方式滚动,而有些内容以另一种方式滚动,则必须创建嵌套的scrollView

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14449283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档