将我的渐变设置为BezierPath的弧形
问题描述:
我已阅读了一些有关但无法应用于我的主题...我尝试将梯度颜色应用于使用UIBezierPath
绘制的弧线。 问题是,我的渐变填充所有的圆圈,而不仅仅是圆环。将我的渐变设置为BezierPath的弧形
func layerWith(size: CGSize, color: UIColor) -> CALayer {
let layer: CAShapeLayer = CAShapeLayer()
var path: UIBezierPath = UIBezierPath()
let lineWidth: CGFloat = 2
layer.backgroundColor = nil
layer.path = path.cgPath
layer.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
switch self {
case .ring:
path.addArc(withCenter: CGPoint(x: size.width/2, y: size.height/2),
radius: size.width/2,
startAngle: 0,
endAngle: CGFloat(2 * M_PI),
clockwise: false);
layer.fillColor = UIColor.clear.cgColor
layer.strokeColor = color.cgColor
layer.lineWidth = lineWidth
let colorGradStart = UIColor(red: 0/255, green: 209/255, blue: 192/255, alpha: 1.0)
let colorGradEnd = UIColor(red: 00/255, green: 99/255, blue: 91/255, alpha: 1.0)
let gradient = CAGradientLayer()
gradient.frame = path.bounds
gradient.colors = [colorGradStart.cgColor, colorGradEnd.cgColor]
let shapeMask = CAShapeLayer()
shapeMask.path = path.cgPath
gradient.mask = shapeMask
layer.addSublayer(gradient)
}
return layer
}
所以,这段代码,将梯度应用到所有填充形式,我只需要弧。
答
您应该设置shapeMask的fillColor和strokeColor,而不是图层。
CABezierPath?还是UIBezierPath? –
没有CABezierPah这样的东西。我假设你的意思是UIBezierPath? –
@ElTomato UIBezierPath,只是一个错误。对不起 – John