菜鸟教程小白 发表于 2022-12-11 16:39:49

ios - 如何将渐变颜色添加到使用 UIBezierPath 创建的 CAShapeLayer


                                            <p><p>我试过<a href="https://stackoverflow.com/questions/32109604/how-to-add-a-cagradientlayer-to-a-cashapelayer" rel="noreferrer noopener nofollow">this</a>和 <a href="https://stackoverflow.com/questions/20630653/apply-gradient-color-to-arc-created-with-uibezierpath" rel="noreferrer noopener nofollow">this</a>但仍然没有成功。基本上我想创建这样的东西(内圈)。圆将根据一些数据创建,假设数据为 50,我们将得到一个半圆,如果它是 100,我们将得到一个完整的圆。</p>

<p> <a href="/image/P1lsi.png" rel="noreferrer noopener nofollow"><img src="/image/P1lsi.png" alt="enter image description here"/></a> </p>

<p>这就是我目前所拥有的,那么我该如何创建上述设计</p>

<p> <a href="/image/xW3kB.png" rel="noreferrer noopener nofollow"><img src="/image/xW3kB.png" alt="enter image description here"/></a> </p>

<p>我使用界面生成器创建了一个 View ,并使用此代码绘制了这些圆圈</p>

<pre><code>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)



}
</code></pre>

<p>这就是我创建渐变的方式。</p>

<pre><code>    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 =
    self.myView.layer.insertSublayer(gradient, atIndex:0)
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果您想要真正模拟渐变色,可以查看 <a href="https://stackoverflow.com/a/36655516/1894067" rel="noreferrer noopener nofollow">this SO answer</a> .它基于将矩形 View 分成 4 个部分的十字,然后移动每个部分的颜色以获得应用于图层蒙版的规则渐变。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何将渐变颜色添加到使用 UIBezierPath 创建的 CAShapeLayer,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/37671024/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/37671024/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何将渐变颜色添加到使用 UIBezierPath 创建的 CAShapeLayer