         var view = UIView()
         view.translatesAutoresizingMaskIntoConstraints = false
         view.backgroundColor = UIColor.white.withAlphaComponent(0.5)
+        
+        
         return view
     }()
     private lazy var iconView: UIImageView = {
         var view = UIImageView()
         view.translatesAutoresizingMaskIntoConstraints = false
         return view
+    }()
+    private lazy var backgroundGradientLayer: CAGradientLayer = {
+        let layer = CAGradientLayer()
+        layer.colors = [UIColor.clear.cgColor, UIColor.clear.cgColor]
+        layer.locations = [0.0, 1.0]
+        return layer
     }()
     
     private var progressTopConstraint: NSLayoutConstraint!

            updateValueForCurrentTopOffset()
        }
    }
    
    open var backgroundView: UIImageView = {
        var view = UIImageView()

        updateValueFor(topOffset: progressTopConstraint.constant, isFinal: true)
    }
    private func updateValueFor(topOffset: CGFloat, isFinal: Bool) {
        let constrainedTopOffset = min(max(0, topOffset), bounds.height)
        progressTopConstraint.constant = constrainedTopOffset
        let value = OffsetCalculator.valueBy(topOffset: constrainedTopOffset, minValue: minValue, maxValue: maxValue, height: bounds.height, reversed: reversed)
        update(value: value, isFinal: isFinal)
    }
    private func update(value: CGFloat, isFinal: Bool) {
