代码之家  ›  专栏  ›  技术社区  ›  Chris

将UICollectionView中的第一个UICollectionViewCell居中

  •  0
  • Chris  · 技术社区  · 7 年前

    我有一个 UICollectionView 可以有一个或两个细胞。

    有没有可能让第一个单元格水平居中,第二个单元格在左窗格中也同样居中

    从我看到的参考资料来看,我认为我需要使用 UICollectionViewDelegateFlowLayout insetForSectionAt 方法,但由于某些原因,我无法使它精确居中,而且当它只是一个单元格时,我相信插入会导致 UICollectionView视图 因为创建了足够的空间而变得可滚动。。

    Illustration 1st two is an example with 2 cells, last is example with 1 cell

    1 回复  |  直到 7 年前
        1
  •  1
  •   Hasti Ranjkesh    7 年前

    要使集合视图成为单元格中心,控制器必须确认UICollectionViewDelegateFlowLayout协议。使用以下代码使单元格居中:

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: collectionView.frame.width * 0.7, height: 300)
    }
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        let width = collectionView.frame.width
        let margin = width * 0.3
        return UIEdgeInsets(top: 10, left: margin / 2, bottom: 10, right: margin / 2)
    }
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
        return 0
    }
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
       return collectionView.frame.width * 0.3 / 2
    }
    

    如果在numberOfItemsInSection方法中返回1或2,则可以正常工作。

    推荐文章