Как визуализировать конус CALayerGradient? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь визуализировать конический градиент, используя CALayerGradient в CGContext

    let colors = [ UIColor(hue: 0, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor,
                   UIColor(hue: 1/6, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor,
                   UIColor(hue: 2/6, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor,
                   UIColor(hue: 0.5, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor,
                    UIColor(hue: 4/6, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor,
                    UIColor(hue: 5/6, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor,
                    UIColor(hue: 1.0, saturation: 1.0, brightness: 1.0, alpha: 1.0).cgColor ]

    let conicGradient = CAGradientLayer()
    conicGradient.type = .conic
    conicGradient.frame = bounds
    conicGradient.startPoint = CGPoint( x: 0.5, y: 0.5 )
    conicGradient.endPoint = CGPoint( x: 1, y: 1 )
    conicGradient.colors = colors as [Any]

    conicGradient.render( in: mContext ) // This doesn't work

    if let drawingContext = UIGraphicsGetCurrentContext()
    {
        drawingContext.draw( myContext.makeImage()!, in: bounds )
    }

Выше, изменение типа на что-нибудь еще будет работать.Кроме того, если я не пытаюсь выполнить рендеринг в CGContext, но добавляю его в качестве подслоя, он работает, единственное, что не работает, - это конический рендеринг в CGContext, что я и хочу сделать.Так я что-то упускаю или рендеринг коника не реализован?

1 Ответ

0 голосов
/ 03 января 2019

Вместо того, чтобы пытаться рендериться в произвольный контекст, попробуйте выдвинуть этот контекст, используя UIGraphicsPushContext(_:), нарисовав в текущем текущем контексте, а затем вытолкнув этот контекст с помощью UIGraphicsPopContext().

...