Use drawLinearGradient instead of CAGradientLayer.
An example of a quick fix below:
override func viewDidLoad() {
super.viewDidLoad()
let topPoint = CGPoint(x: 33, y: -55)
let botPoint = CGPoint(x: 217, y: 469)
let additionalLayer = CALayer()
additionalLayer.frame = view.bounds
UIGraphicsBeginImageContext(view.bounds.size)
if let context = UIGraphicsGetCurrentContext() {
let colorSpace = CGColorSpaceCreateDeviceRGB()
let colors : [CGFloat] = [1.0, 1.0, 1.0, 1.0, 0.5, 0.5, 0.5, 1.0, 0.0, 0.0, 0.0, 1.0]
let locations : [CGFloat] = [0.0, 0.468, 1.0]
let gradient = CGGradient(colorSpace: colorSpace, colorComponents: colors, locations: locations, count: 3)
context.drawLinearGradient(gradient!, start: topPoint, end: botPoint, options: CGGradientDrawingOptions.drawsAfterEndLocation)
additionalLayer.contents = context.makeImage()!
}
drawLine(onLayer: additionalLayer, fromPoint: topPoint, toPoint: botPoint)
view.layer.addSublayer(additionalLayer)
}
Screenshot of the result
source
share