【问题标题】:Custom Margins and Restraints for Individual UICollectionViewCells单个 UICollectionViewCells 的自定义边距和限制
【发布时间】:2020-08-06 18:00:29
【问题描述】:

我有一个包含两个单元格的 2 项 UICollectionView。我的目标是每次滑动时,在任何给定时间,您只会看到一个单独的单元格,该单元格与左右边缘的间距相等。如果单元格的大小也不同,那一定意味着每个单元格必须从边距具有单独唯一的约束。

问题:

  1. 如何为这些单元格添加约束,以使它们在多个 iPhone 布局中保持均匀分布?

  2. 如何确保一个单元格不会“流血”到下一个单元格,确保在给定的时间内,屏幕上会显示一个单元格?

谢谢!

【问题讨论】:

    标签: swift xcode uicollectionview constraints uicollectionviewcell


    【解决方案1】:

    您必须在UICollectionViewDelegateFlowLayout 中实现三个方法才能使其正常工作。

    1. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
    2. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
    3. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat

    将计算值返回给每个单元格,单元格将正确布局。这是一个示例实现。

    extension ViewController: UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            let spacing: CGFloat = 16 * 2
            return .init(width: collectionView.frame.size.width - spacing, height: 100)
        }
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { 16 }
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { 0 }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2020-03-16
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多