2016-06-07 141 views
2

我试过thisthis但仍然没有成功。基本上我想创建这样的内圈(内圈)。圆会根据一些数据创建,如果数据是50,我们将得到一个半圆,如果它的数目是100,我们将得到整圆。如何添加渐变颜色到使用UIBezierPath创建的CAShapeLayer

enter image description here

这是我到目前为止,我怎么能创造上述设计

enter image description here

我一直在使用Interface Builder创建的视图,并绘制利用这一点,这些圈子代码

override func viewDidLoad() { 


    let circlePath = UIBezierPath(arcCenter: CGPoint(x: myView.layer.frame.height/2,y: myView.layer.frame.height/2), radius: CGFloat(100), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true) 

    let shapeLayer = CAShapeLayer() 
    shapeLayer.path = circlePath.CGPath 
    shapeLayer.fillColor = UIColor.clearColor().CGColor 
    shapeLayer.strokeColor = UIColor.grayColor().CGColor 
    shapeLayer.lineWidth = 3.0 

    let colorCirclePath = UIBezierPath(arcCenter: CGPoint(x: myView.layer.frame.height/2,y: myView.layer.frame.height/2), radius: CGFloat(100), startAngle: CGFloat(0), endAngle:CGFloat(M_PI * 2), clockwise: true) 

    let coloredShapeLayer = CAShapeLayer() 
    coloredShapeLayer.path = colorCirclePath.CGPath 
    coloredShapeLayer.fillColor = UIColor.clearColor().CGColor 
    coloredShapeLayer.strokeColor = UIColor.whiteColor().CGColor 
    coloredShapeLayer.lineWidth = 10.0 
    self.myView.layer.addSublayer(coloredShapeLayer) 

    self.myView.layer.addSublayer(shapeLayer) 



} 

这就是我如何创建渐变。

let gradient: CAGradientLayer = CAGradientLayer() 
    let startingColorOfGradient = UIColor(colorLiteralRed: 50/255, green: 189/255, blue: 170/255, alpha: 1.0).CGColor 
    let endingColorOFGradient = UIColor(colorLiteralRed: 133/255, green: 210/255, blue: 230/255, alpha: 1.0).CGColor 
    gradient.startPoint = CGPoint(x: 1.0, y: 0.5) 
    gradient.endPoint = CGPoint(x: 0.0, y: 0.5) 
    gradient.colors = [startingColorOfGradient , endingColorOFGradient] 
    self.myView.layer.insertSublayer(gradient, atIndex:0) 
+1

你的问题呢?你解决了吗? –

回答

0

如果要渐变颜色的真实仿真可以检查this SO answer。它的基于交即,除以矩形视图中4个部分,然后转移上的各部分的颜色,以获得施加到常规的梯度层掩模。