径向渐变使用意想不到的灰色
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
。这样就可以得到你期望的渐变。
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
。这样就可以得到你期望的渐变。