径向渐变使用意想不到的灰色

Radial gradient uses unexpected gray color

TL;DR

有谁知道如何在径向渐变中平滑从红色到白色的渐变过渡?因为我的渐变中出现难看的灰色。

详情:

我在 draw rect 中使用以下内容创建了一个自定义 UIView

override func draw(_ rect: CGRect) {

    let colors = [UIColor.red.cgColor, UIColor.clear.cgColor] as CFArray
    let divisor: CGFloat = 3
    let endRadius = sqrt(pow(frame.width/divisor, 2) + pow(frame.height/divisor, 2))
    let center = CGPoint(x: bounds.midX, y: bounds.midY)
    let gradient = CGGradient(colorsSpace: nil, colors: colors, locations: nil)

    let context = UIGraphicsGetCurrentContext()
    context?.saveGState()
    context?.drawRadialGradient(gradient!,
                                startCenter: center,
                                startRadius: 0.0,
                                endCenter: center,
                                endRadius: endRadius,
                                options: .drawsBeforeStartLocation)

    context?.restoreGState()
}

我将自定义视图的颜色设置为红色,并将该视图添加到 viewcontroller 的视图中,该视图具有白色背景。

我希望渐变从红色变为白色,但它似乎从红色变为灰色。我尝试将渐变数组中的第二种颜色更改为白色,虽然看起来稍微好一点,但仍然存在灰色。

在透明渐变上使用透明色时请记住,透明色是通过将黑色应用 alpha 生成的,这就是为什么您的外壳会呈现灰色。

要解决此问题,请将 UIColor.clear.cgColor 数组从 colors 数组更改为 UIColor.white.withAlphaComponent(0.0).cgColor。这样就可以得到你期望的渐变。