TL; DR
有谁知道如何在径向渐变中平滑从红色到白色的渐变过渡?因为我的渐变中有一种难看的灰色。
详细信息:
我在draw rect
中创建了一个带有以下内容的自定义UIViewoverride 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的视图中,该视图具有白色背景。
我希望渐变从红色变为白色但似乎从红色变为灰色。我尝试将渐变阵列中的第二种颜色更改为白色,尽管它看起来稍微好一点,但灰度仍然存在。
答案 0 :(得分:2)
在透明渐变上使用清晰的颜色时请记住,通过将黑色应用于alpha会生成清晰的颜色,这也就是为什么在您的情况下获得灰色的原因。
要使用UIColor.clear.cgColor
从colors
数组更改UIColor.white.withAlphaComponent(0.0).cgColor
代码,以解决此问题。这样你就可以得到你期望的渐变。