Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. lazy var flowLayout: UICollectionViewFlowLayout = {
  2. let layout = UICollectionViewFlowLayout()
  3. layout.scrollDirection = .horizontal // .vertical
  4. layout.minimumInteritemSpacing = 10
  5.  
  6. return layout
  7. }()
  8.  
  9. lazy var collectionView: UICollectionView = {
  10. let cv = UICollectionView(frame: .zero, collectionViewLayout: flowLayout)
  11. cv.backgroundColor = .white
  12.  
  13. return cv
  14. }()
  15.  
  16. func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
  17.  
  18. let targetWidth = collectionView.bounds
  19. .inset(collectionView.contentInset)
  20. .inset(flowLayout.sectionInset)
  21. .width
  22.  
  23. let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! SampleCell
  24. cell.configure(data: randomTexts[indexPath.row])
  25.  
  26. let size = cell.systemLayoutSizeFitting(
  27. .init(width: targetWidth, height: 0),
  28. withHorizontalFittingPriority: .required, verticalFittingPriority: .fittingSizeLevel)
  29.  
  30. return size
  31. }
  32.  
  33. override func systemLayoutSizeFitting( _ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority,
  34. verticalFittingPriority: UILayoutPriority) -> CGSize {
  35.  
  36. let contentSize = contentView.systemLayoutSizeFitting(
  37. targetSize,
  38. withHorizontalFittingPriority: horizontalFittingPriority,
  39. verticalFittingPriority: verticalFittingPriority)
  40.  
  41. return contentSize.withWidth(targetSize.width)
  42. }
  43.  
  44. extension CGRect {
  45. func inset(_ insets: UIEdgeInsets) -> CGRect {
  46. return self.inset(by: insets)
  47. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement