【问题标题】:swift CAShapeLayer strokeColor by gradient colorswift CAShapeLayer strokeColor 按渐变颜色
【发布时间】:2020-11-23 12:17:35
【问题描述】:

你好,我有一个圆形图层需要 GradientColor 的颜色

我尝试使用 CAGradientLayer 并像这样掩盖它

let gradientChargeLayer = CAGradientLayer()
    gradientChargeLayer.colors = CGColor.mColor
    gradientChargeLayer.frame = vShape.bounds
    gradientChargeLayer.locations = [0,1]
    gradientChargeLayer.startPoint = CGPoint(x: 0,y: 0.5)
    gradientChargeLayer.endPoint = CGPoint(x: 1,y: 0.5)
    gradientChargeLayer.mask = shapeLayer
    vShape.layer.addSublayer(gradientChargeLayer)

但我想要的是从笔画开始到结束的渐变色

    shapeLayer.path = circularPath.cgPath
    shapeLayer.strokeColor = UIColor.red.cgColor   <<< here 

谢谢

【问题讨论】:

    标签: swift swift4 swift5 cashapelayer


    【解决方案1】:

    我相信你可以有不同的方法

    • 一,你可以做一个外圈和内圈,然后将所需的路径/图层添加到外圈(这个圈比内圈大)两个圈子没有可见的笔划

    • 或者我可以推荐你 UIGraphigsImageRenderer 一起工作 https://developer.apple.com/documentation/uikit/uigraphicsimagerenderer 最后一个有一个上下文可以用来做更高级的渲染context.cgContext.setStrokePattern在这里你可以添加一个CGPattern和颜色来尝试完成它

    警察局。对不起,如果我的英语混淆了

    【讨论】:

      【解决方案2】:

      我猜你知道,形状图层只绘制单一颜色。

      通过将形状图层设置为渐变图层上的蒙版,您可以让形状图层显示底层渐变图层的颜色。

      如果你总是画一个圆并且希望圆的笔触颜色从头到尾变化,你可以使用conic类型设置你的渐变层,并指定渐变层中的颜色开始和在你想要的地方结束。但是,这仅适用于包含椭圆的形状层,其中形状的大小和中心以及渐变的大小和中心匹配。

      正如@Guillodacosta 在他们的回答中所说,您可能不得不放弃使用形状层并使用 Core Graphics 将您的图形绘制到图形上下文中。 (您可以这样做一次,然后将结果捕获到 UIImageView 中,以避免 Core Graphics 渲染速度变慢。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-13
        • 2016-01-25
        相关资源
        最近更新 更多