调整 UICollectionView 中特定部分的插图
Posted
技术标签:
【中文标题】调整 UICollectionView 中特定部分的插图【英文标题】:Adjust insets of a specific section in UICollectionView 【发布时间】:2016-08-09 18:38:57 【问题描述】:insetForSectionAtIndex(在 DelegateFlowLayout 上)可以为一个部分中的所有单元格设置插图
sectionInset(在 FlowLayout 上)允许设置适用于所有部分的插图。
但是,我正在寻找一种仅将插图应用到一个特定部分的方法 - 这可能吗?
【问题讨论】:
【参考方案1】:你必须用这个方法在你的类中实现UICollectionViewDelegateFlowLayout
:
对于 Swift 4
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
var edgeInsets = UIEdgeInsets()
if section == THE_SECTION_YOU_WANT
// edgeInsets configuration stuff
return edgeInsets;
对于 Swift 3
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets
var edgeInsets = UIEdgeInsets()
if section == THE_SECTION_YOU_WANT
// edgeInsets configuration stuff
return edgeInsets;
【讨论】:
我之前尝试过,它似乎将插入应用于该部分中的所有元素。有没有办法可以将它应用到整个部分,而不是每个元素? @GauravSharma 此方法将插入应用到整个部分,这就是它给它一个部分Int
的原因。
刚刚再次尝试 - 结果相同 - 它将插入应用到部分中的每个单元格,而不是部分。
@GauravSharma 和有什么区别?是否要将插入应用到页眉部分和页脚部分?
不,我想插入整个部分(不是部分中的每个项目)。【参考方案2】:
为 swift 4 命名:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets
...
【讨论】:
【参考方案3】:你会从UICollectionViewDelegateFlowLayout
协议中做这样的事情:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets
switch section
case 0:
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
case 1:
return UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0)
【讨论】:
以上是关于调整 UICollectionView 中特定部分的插图的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView insertItem -> 调整动画时间?