Используйте: gradient.render(in: ctx)
вместо layer.insertSublayer(gradient, at: 0
и нарисуйте segement1
после этого: (Предполагая, что вы делаете это в пользовательском классе представления)
class customView: UIView {
override func draw(_ rect: CGRect) {
guard let ctx = UIGraphicsGetCurrentContext() else { fatalError() }
let gradient = CAGradientLayer()
gradient.frame = bounds
gradient.colors = [UIColor.init(displayP3Red: 0.29, green: 0.56, blue: 1.0, alpha: 1).cgColor, UIColor.init(displayP3Red: 0.23, green: 0.19, blue: 0.8, alpha: 1).cgColor]
gradient.render(in: ctx)
ctx.setFillColor(red: 1, green: 0.5, blue: 0.5, alpha: 1)
let segment1 = CGRect(x: 20, y: 110, width: 30, height: 10)
ctx.fill(segment1)
}
}
Таким образом, вы не используетеCGGraphicsContext
в дополнение к CALayer
, вы просто используете CGGraphicsContext
, потому что ваш слой визуализируется с использованием ctx