Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @IBOutlet var collectionView: UICollectionView!
- let fadeOffset: CGFloat = 10
- override func viewDidLayoutSubviews() {
- super.viewDidLayoutSubviews()
- if self.collectionView.layer.mask == nil {
- let maskLayer = CAGradientLayer()
- maskLayer.locations =
- [
- NSNumber(value: 0.0),
- NSNumber(value: 0.2),
- NSNumber(value: 0.8),
- NSNumber(value: 1.0)
- ]
- let bounds = CGRect(origin: CGPoint.zero,
- size: self.collectionView.frame.size)
- maskLayer.bounds = bounds
- maskLayer.anchorPoint = CGPoint.zero
- self.collectionView.layer.mask = maskLayer
- }
- self.scrollViewDidScroll(self.collectionView)
- }
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
- if scrollView == self.collectionView {
- let outerColor = UIColor(white: 1, alpha: 0).cgColor
- let innerColor = UIColor(white: 1, alpha: 1).cgColor
- var colors: [CGColor] = []
- let x = scrollView.contentOffset.x
- let y = scrollView.contentOffset.y
- // CALCULATE TOP FADE
- colors += [y + scrollView.contentInset.top <= self.fadeOffset ?
- innerColor : outerColor]
- colors += [innerColor]
- // CALCULATE BOTTOM FADE
- colors += [innerColor]
- colors += [y + scrollView.frame.height >= scrollView.contentSize.height - self.fadeOffset ?
- innerColor : outerColor]
- // APPLY MASK COLORS
- if let mask = scrollView.layer.mask as? CAGradientLayer {
- mask.colors = colors
- CATransaction.begin()
- CATransaction.setDisableActions(true)
- mask.position = CGPoint(x, y)
- CATransaction.commit()
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement