Я впервые задаю вопрос, так что извините, если он не очень тщательный.
В основном я пытаюсь применить слой градиента поверх UIBezierPath, который рисуется как график.
Вот мой график:

Вот градиентный слой, для которого я собираюсь:

Вот то, что я пытался нарисовать на графике:
let path = quadCurvedPathWithPoints(points: points)
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.fillColor = UIColor.white.cgColor
shapeLayer.position = CGPoint(x: 0, y: 0)
shapeLayer.lineWidth = 1.0
Очевидно, это заполняет график синим штрихом, но теперь я пытаюсь применить градиент от белого к зеленому.То, как я это делаю, не работает.Вот результат:

Вот код, с которым я борюсь:
let startColor = UIColor.white.withAlphaComponent(0.5)
let endColor = UIColor.green
let gradient = CAGradientLayer()
gradient.colors = [startColor.cgColor, endColor.cgColor]
gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
gradient.frame = path.bounds
let shapeMask = CAShapeLayer()
shapeMask.path = path.cgPath
gradient.mask = shapeLayer
sparkLineView.layer.addSublayer(gradient)