Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. @IBOutlet var collectionView: UICollectionView!
  2. let fadeOffset: CGFloat = 10
  3.  
  4. override func viewDidLayoutSubviews() {
  5. super.viewDidLayoutSubviews()
  6.  
  7. if self.collectionView.layer.mask == nil {
  8.  
  9. let maskLayer = CAGradientLayer()
  10. maskLayer.locations =
  11. [
  12. NSNumber(value: 0.0),
  13. NSNumber(value: 0.2),
  14. NSNumber(value: 0.8),
  15. NSNumber(value: 1.0)
  16. ]
  17.  
  18. let bounds = CGRect(origin: CGPoint.zero,
  19. size: self.collectionView.frame.size)
  20. maskLayer.bounds = bounds
  21. maskLayer.anchorPoint = CGPoint.zero
  22.  
  23. self.collectionView.layer.mask = maskLayer
  24. }
  25.  
  26. self.scrollViewDidScroll(self.collectionView)
  27. }
  28.  
  29. func scrollViewDidScroll(_ scrollView: UIScrollView) {
  30. if scrollView == self.collectionView {
  31.  
  32. let outerColor = UIColor(white: 1, alpha: 0).cgColor
  33. let innerColor = UIColor(white: 1, alpha: 1).cgColor
  34. var colors: [CGColor] = []
  35.  
  36. let x = scrollView.contentOffset.x
  37. let y = scrollView.contentOffset.y
  38.  
  39. // CALCULATE TOP FADE
  40. colors += [y + scrollView.contentInset.top <= self.fadeOffset ?
  41. innerColor : outerColor]
  42. colors += [innerColor]
  43.  
  44. // CALCULATE BOTTOM FADE
  45. colors += [innerColor]
  46. colors += [y + scrollView.frame.height >= scrollView.contentSize.height - self.fadeOffset ?
  47. innerColor : outerColor]
  48.  
  49. // APPLY MASK COLORS
  50. if let mask = scrollView.layer.mask as? CAGradientLayer {
  51. mask.colors = colors
  52.  
  53. CATransaction.begin()
  54.  
  55. CATransaction.setDisableActions(true)
  56. mask.position = CGPoint(x, y)
  57.  
  58. CATransaction.commit()
  59. }
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement