Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. //
  2. // FadeScrollView.swift
  3. //
  4. // Created by Luís Machado on 23/06/2017.
  5. // Copyright © 2017 Luis Machado. All rights reserved.
  6. //
  7.  
  8. import UIKit
  9.  
  10. class FadeScrollView: UIScrollView, UIScrollViewDelegate {
  11.  
  12. let fadePercentage: Double = 0.2
  13. let gradientLayer = CAGradientLayer()
  14. let transparentColor = UIColor.clear.cgColor
  15. let opaqueColor = UIColor.black.cgColor
  16.  
  17. var topOpacity: CGColor {
  18. let scrollViewHeight = frame.size.height
  19. let scrollContentSizeHeight = contentSize.height
  20. let scrollOffset = contentOffset.y
  21.  
  22. let alpha:CGFloat = (scrollViewHeight >= scrollContentSizeHeight || scrollOffset <= 0) ? 1 : 0
  23.  
  24. let color = UIColor(white: 0, alpha: alpha)
  25. return color.cgColor
  26. }
  27.  
  28. var bottomOpacity: CGColor {
  29. let scrollViewHeight = frame.size.height
  30. let scrollContentSizeHeight = contentSize.height
  31. let scrollOffset = contentOffset.y
  32.  
  33. let alpha:CGFloat = (scrollViewHeight >= scrollContentSizeHeight || scrollOffset + scrollViewHeight >= scrollContentSizeHeight) ? 1 : 0
  34.  
  35. let color = UIColor(white: 0, alpha: alpha)
  36. return color.cgColor
  37. }
  38.  
  39. override func layoutSubviews() {
  40. super.layoutSubviews()
  41.  
  42. self.delegate = self
  43. let maskLayer = CALayer()
  44. maskLayer.frame = self.bounds
  45.  
  46. gradientLayer.frame = CGRect(x: self.bounds.origin.x, y: 0, width: self.bounds.size.width, height: self.bounds.size.height)
  47. gradientLayer.colors = [topOpacity, opaqueColor, opaqueColor, bottomOpacity]
  48. gradientLayer.locations = [0, NSNumber(floatLiteral: fadePercentage), NSNumber(floatLiteral: 1 - fadePercentage), 1]
  49. maskLayer.addSublayer(gradientLayer)
  50.  
  51. self.layer.mask = maskLayer
  52. }
  53.  
  54. func scrollViewDidScroll(_ scrollView: UIScrollView) {
  55. gradientLayer.colors = [topOpacity, opaqueColor, opaqueColor, bottomOpacity]
  56. }
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement