UICollectionViewCell 在 UICollectionViewReusableView 宽度之后开始

Posted

技术标签:

【中文标题】UICollectionViewCell 在 UICollectionViewReusableView 宽度之后开始【英文标题】:UICollectionViewCell starts after UICollectionViewReusableView width 【发布时间】:2019-03-21 06:03:00 【问题描述】:

我正在 UITableViewCell 中处理 UICollectionView。使用“UICollectionReusableView”作为标题视图。 header view 的宽度是 100。在我介绍 header view 之前,CollectionViewCell 从 CollectionView 的开头开始,正如预期的那样。在我放置标题视图后,CollectionViewCell 从标题视图宽度的末尾开始。我认为某处位置设置不正确。

CollectionView 的滚动方向是水平的。我使用 UICollectionViewFlowLayout 来呈现 CollectionViewCell。

    let layout =  UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 5.0, left: 5.0, bottom: 5.0, right: 5.0)
    layout.minimumInteritemSpacing = 8.0
    layout.minimumLineSpacing = 5.0
    layout.scrollDirection = .horizontal
    layout.sectionHeadersPinToVisibleBounds = true
    collectionView.collectionViewLayout = layout

我已经使用“referenceSizeForHeaderInSection”委托设置了标题视图的大小。 任何我可能错的提示。

【问题讨论】:

如果我正确理解您的问题,它将“从标题视图宽度的末尾开始”,因为滚动方向是水平的.. @AjinkyaSharma,是的,你是对的。如果我注释掉滚动方向,则 CollectionViewCell 从中心开始,滚动方向垂直。 【参考方案1】:

而不是使用 UICollectionViewFlowLayout,你应该继承它并覆盖该方法 layoutAttributesForSupplementaryViewOfKind: 并相应地给你的框架

【讨论】:

我希望你的意思是覆盖“layoutAttributesForElements”。因为对我来说标题很好,只有集合视图位置是问题。我做了 UICollectionViewFlowLayout 的子类,并实现了“layoutAttributesForElements”,然后一切听起来都很好。我对你的答案投了赞成票。感谢您的提示。

以上是关于UICollectionViewCell 在 UICollectionViewReusableView 宽度之后开始的主要内容,如果未能解决你的问题,请参考以下文章

XCTest 与自定义 UICollectionViewCell

在情节提要中设计 UICollectionViewCell

动画后 UICollectionViewCell 位置错误

滚动时大型 UICollectionViewCell 停止显示

UICollectionViewCell 在选择时不改变颜色

如何使用 SwiftUI 在 UICollectionViewCell 中填充内容