CollectionViewSection 插图不考虑 Header/Footer 视图
CollectionViewSection Inset Does Not Consider Header/Footer Views
我有一个带有页眉和页脚的 collectionView。我想在该部分的末尾添加间距。
我正在使用:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 16, right: 0)
}
但是,这没有考虑页脚视图。因此,插图被添加到该部分的最后一个索引。在应用插图之前是否有任何方法或方式来包含部分页脚?
我需要页脚视图下的插图。
现有功能的说明。 (黄色是 indexPath.item)预期的功能是在页脚下插入(红色)。
正如您正确指出的那样,UICollectionView 的部分位于 header 和页脚之间。
如果您想在页脚下方添加间距,最好的方法是创建自定义页脚视图。
optional func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView
Here 是此方法的文档。
理想情况下,您希望为自定义页脚创建一个子类:]
class CustomFooterView: UICollectionReusableView {
}
然后在viewDidLoad
中注册:
collectionView.register(CustomFooterView.self, forSupplementaryViewOfKind: .elementKindSectionFooter, withReuseIdentifier: "Your footer reuse ID")
那么,你可以return这样:
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionFooter {
return collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "Your footer reuse ID", for: indexPath)
}
else {
}
}
现在您只需确保自动布局能够确定页脚的大小。因此,为您的自定义页脚添加一个标签,并确保其底部约束等于您想要的填充。
注意:有一个警告。现在您已经实现了 return 自定义页脚的方法,并且为 header 调用了相同的方法,您可能还需要使用自定义 header。或者,您需要为您的 header.
注册标准的 UICollectionReusableView 并将其 deque
我有一个带有页眉和页脚的 collectionView。我想在该部分的末尾添加间距。
我正在使用:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 16, right: 0)
}
但是,这没有考虑页脚视图。因此,插图被添加到该部分的最后一个索引。在应用插图之前是否有任何方法或方式来包含部分页脚?
我需要页脚视图下的插图。
现有功能的说明。 (黄色是 indexPath.item)预期的功能是在页脚下插入(红色)。
正如您正确指出的那样,UICollectionView 的部分位于 header 和页脚之间。
如果您想在页脚下方添加间距,最好的方法是创建自定义页脚视图。
optional func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView
Here 是此方法的文档。
理想情况下,您希望为自定义页脚创建一个子类:]
class CustomFooterView: UICollectionReusableView {
}
然后在viewDidLoad
中注册:
collectionView.register(CustomFooterView.self, forSupplementaryViewOfKind: .elementKindSectionFooter, withReuseIdentifier: "Your footer reuse ID")
那么,你可以return这样:
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionFooter {
return collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "Your footer reuse ID", for: indexPath)
}
else {
}
}
现在您只需确保自动布局能够确定页脚的大小。因此,为您的自定义页脚添加一个标签,并确保其底部约束等于您想要的填充。
注意:有一个警告。现在您已经实现了 return 自定义页脚的方法,并且为 header 调用了相同的方法,您可能还需要使用自定义 header。或者,您需要为您的 header.
注册标准的 UICollectionReusableView 并将其 deque