Flo*_*n_L 4 ios uicollectionview uicollectionviewlayout swift
我目前正在UICollectionView
用几个部分(假设是4个)实现一个,如下图所示:
从第0节到第2 UICollectionViewFlowLayout
节,每个节的单元格大小都不同,但是对于第3节,这是自定义布局(瀑布布局)。
我已经实现了2种不同的布局,它们可以在单独的环境中很好地工作UICollectionView
,但是我在同一个2种布局之间切换时遇到了一些麻烦UICollectionView
。
首先,可以将布局从一个部分更改为另一个部分,如果这样的话,可以实现这一点。
我认为您的问题标题有些误导。您无需更改每个部分的布局。您需要根据部分显示不同的布局。
要实现所需的功能,必须将其子类化UICollectionViewLayout
,然后根据部分确定布局。对于您的情况,我建议您将其UICollectionViewFlowLayout
归类,因为这需要大量的工作。
Section 0 - Section 2
只需使用即可轻松实现您的样本数量UICollectionViewDelegateFlowLayout
。
由于那里有“全宽”像元,因此可以使用以下方法确定每个像元的大小和插图:
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
Run Code Online (Sandbox Code Playgroud)
当您尝试构建第3部分时,将出现第一个问题。对于这种情况,我建议您搜索“瀑布式布局”,GitHub上有一些实现。确定其工作原理后,应执行以下操作:
UICollectionView
UICollectionViewFlowLayout
子类UICollectionViewFlowLayout
。func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes?
手动覆盖和计算属性。抱歉,如果我的回答太宽泛。
以下是一些有用的链接:
归档时间: |
|
查看次数: |
1310 次 |
最近记录: |