我目前正在实现一个UICollectionView
,其中包含几个部分(例如4),如下图所示:
从第0节到第2节,它只是一个UICollectionViewFlowLayout
,每个节的单元格大小不同,但对于第3节,这是一个自定义布局(瀑布布局)。
我已经实现了2种不同的布局,它们可以在单独的UICollectionView
中很好地工作,但是我很难在同一UICollectionView
的2种布局之间进行切换。
首先可以将布局从一个部分更改为另一个部分,如果可以的话,可以实现这一点。
答案 0 :(得分:3)
我认为您的问题标题有些误导。您无需更改每个部分的布局。您需要根据部分显示不同的布局。
要实现所需的功能,必须子类 List("a", "b1","","c2").
foldLeft(List[String]())((b,a) =>
if (StringUtils.isNotBlank(a))
b:+"abc"+a
else b
).mkString(";")
,然后根据部分确定布局。就您的情况而言,我建议您将UICollectionViewLayout
子类化,因为这需要大量的工作。
UICollectionViewDelegateFlowLayout
,就可以轻松实现样本的 UICollectionViewFlowLayout
。
由于那里有“全宽” 单元格,因此可以使用以下方法确定每个单元格的大小和插图:
Section 0 - Section 2
当您尝试构建第3章时,将出现第一个问题。对于这种情况,我建议您搜索“瀑布式布局”,GitHub上有一些实现。确定其工作原理后,应执行以下操作:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets
func collectionView(UICollectionView, layout: UICollectionViewLayout, sizeForItemAt: IndexPath) -> CGSize
func collectionView(UICollectionView, layout: UICollectionViewLayout, minimumLineSpacingForSectionAt: Int) -> CGFloat
UICollectionView
子类UICollectionViewFlowLayout
可能性。 UICollectionViewFlowLayout
并手动计算属性。对不起,如果我的回答太宽泛了。
以下是一些有用的链接: