BilibiliCollectionViewLayout.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. //
  2. // BilibiliCollectionViewLayout.swift
  3. // SwiftBilibili
  4. //
  5. // Created by 罗文 on 2021/7/18.
  6. // Copyright © 2021年 罗文. All rights reserved.
  7. // 处理cell间距为0仍有间隙的问题
  8. import UIKit
  9. final class BilibiliCollectionViewLayout: UICollectionViewFlowLayout {
  10. var maxInteritemSpacing: CGFloat = 0
  11. override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
  12. guard let superAttributes = super.layoutAttributesForElements(in: rect) else { return nil }
  13. let attributes = NSArray(array: superAttributes, copyItems: true) as! [UICollectionViewLayoutAttributes]
  14. if attributes.count < 2 { return attributes }
  15. for i in 1..<attributes.count {
  16. let currentLayoutAttributes = attributes[i]
  17. let prevLayoutAttributes = attributes[i-1]
  18. let origin = prevLayoutAttributes.frame.maxX
  19. if origin + maxInteritemSpacing + currentLayoutAttributes.frame.size.width <= self.collectionViewContentSize.width {
  20. var frame = currentLayoutAttributes.frame
  21. frame.origin.x = origin + maxInteritemSpacing
  22. currentLayoutAttributes.frame = frame
  23. }
  24. }
  25. return attributes
  26. }
  27. }