集合视图单元格快速滚动到中心时出现问题

Posted

技术标签:

【中文标题】集合视图单元格快速滚动到中心时出现问题【英文标题】:Issue while collection view cell scroll to center in swift 【发布时间】:2019-11-04 06:14:06 【问题描述】:

我的 VC 中有一个集合视图,我水平滚动集合视图,我想将每个单元格水平滚动居中,我尝试了一个代码,但是当它滚动时它显示下一个单元格比第二个更左。这是我的代码,

fileprivate let sectionInsets = UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15)

gridView.delegate = self
    gridView.dataSource = self
    gridView.register(ItemCollectionViewCell.self, forCellWithReuseIdentifier: "ItemCollectionViewCell")
    gridView.register(UINib(nibName: "ItemCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ItemCollectionViewCell")
    gridView.showsHorizontalScrollIndicator = true
    gridView.bounces = true
    gridView.showsHorizontalScrollIndicator = false
    gridView.showsVerticalScrollIndicator = false

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

    return auctions?.properties?.count ?? 0

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell

    let cell:ItemCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "ItemCollectionViewCell", for: indexPath) as! ItemCollectionViewCell;
    cell.propertyData = (auctions?.properties![indexPath.row])!
    if auctions?.status == AuctionStatus.Live.rawValue 
        cell.noOfBidsPlaced.isHidden = false
    
    else 
        cell.noOfBidsPlaced.isHidden = true
    
    cell.populateCell()

    return cell



func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAt indexPath: IndexPath) -> CGSize 
    let size = CGSize(width: 335 , height: 337)
    return size


//3
func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    insetForSectionAt section: Int) -> UIEdgeInsets 
    return sectionInsets


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat

    return sectionInsets.left


func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    minimumLineSpacingForSectionAt section: Int) -> CGFloat 
    return sectionInsets.left


如何滚动每个单元格以完美居中? 这是它在开始时显示我的收藏的方式,

这就是它在滚动上显示的内容,它是从左侧剪切的

【问题讨论】:

检查这个答案。 ***.com/questions/54672069/… 我已经尝试了你给定的链接,当我滚动单元格时出现了一个问题。当我滚动屏幕左侧的每个单元格时,它不会显示完全居中,我在我的问题中附加了屏幕,请检查一下。 @克里斯 需要添加分页启用 true 并动态设置单元格宽度 不要使用sectionInsets,用左右间距调整.xib中的图像视图。然后使用集合视图宽度作为单元格宽度 不,兄弟,它不起作用,我已经设置了故事板的前导和尾随集合视图,并且也使用了您的功能,但它仍然在左滚动上剪切视图。 @SidharthKhanna 【参考方案1】:

不要使用静态高度和宽度。 调用这个函数。也许它对你有帮助:-

// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize // return CGSize(width: yourCollectionView.frame.size.width, height: yourCollectionView.frame.size.height ) //

【讨论】:

是的,它居中,但我希望单元格之间的间距与屏幕截图中的相同。 @Gurpreet Singh 删除所有 sectionInsets 代码。我相信您还可以看到您的收藏视图位于中心,而另一个未显示。@Hamza

以上是关于集合视图单元格快速滚动到中心时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

重用表格视图单元格时出现问题?

设置集合视图单元格的动态宽度时出现问题

滚动时显示重复数据的 CollectionView 单元格?

获取嵌入在滚动视图中的单元格的中心点

使用 Objective C 将集合视图单元格对齐到中心

在水平滚动中具有不同高度到顶部的集合视图引脚单元格