Guest User

Untitled

a guest
Jan 20th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. private var layoutCircleFrame = CGRect.zero
  2. private let layoutInsets = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8)
  3. private let itemSize = CGSize(width: 100, height: 100)
  4. private var itemLayoutAttributes = [UICollectionViewLayoutAttributes]()
  5.  
  6. override func prepare() {
  7. super.prepare()
  8. guard let collectionView = collectionView else { return }
  9. itemLayoutAttributes.removeAll()
  10. layoutCircleFrame = CGRect(origin: .zero, size: collectionViewContentSize)
  11. .inset(by: layoutInsets)
  12. .insetBy(dx: itemSize.width / 2.0, dy: itemSize.height / 2.0)
  13. .offsetBy(dx: collectionView.contentOffset.x, dy: collectionView.contentOffset.y)
  14. .insetBy(dx: -collectionView.contentOffset.x, dy: -collectionView.contentOffset.y)
  15.  
  16. for section in 0..<collectionView.numberOfSections {
  17. switch section {
  18. case 0:
  19. let itemCount = collectionView.numberOfItems(inSection: section)
  20. itemLayoutAttributes = (0..<itemCount).map({ (index) -> UICollectionViewLayoutAttributes in
  21. let angleStep: CGFloat = 2.0 * CGFloat.pi / CGFloat(itemCount)
  22. var position = layoutCircleFrame.center
  23. position.x += layoutCircleFrame.size.innerRadius * cos(angleStep * CGFloat(index))
  24. position.y += layoutCircleFrame.size.innerRadius * sin(angleStep * CGFloat(index))
  25. let indexPath = IndexPath(item: index, section: section)
  26. let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath)
  27. attributes.frame = CGRect(center: position, size: itemSize)
  28. return attributes
  29. })
  30. default:
  31. fatalError("Unhandled section \(section).")
  32. }
  33. }
  34. }
Add Comment
Please, Sign In to add comment