【问题标题】:CAGradientLayer not painting form maskCAGradientLayer 不绘制表单遮罩
【发布时间】:2017-08-16 11:16:06
【问题描述】:

有一个 CAShapeLayer

当我将它添加为掩码时,我得到一个空白屏幕

这是我的代码:

    let width: CGFloat = frame.width
    let radius: CGFloat = (width - 35) / 2

    let poing = CGPoint(x: width / 2, y: radius + 8)
    let path =  UIBezierPath(arcCenter: poing, radius: (width - 35) / 2,
                        startAngle: CGFloat(180).toRadians(),
                        endAngle: CGFloat(360).toRadians(),
                        clockwise: true)

    let mask = CAShapeLayer()
    mask.path = path.cgPath

    mask.lineWidth = 8
    mask.strokeStart = 0
    mask.strokeEnd = 1
    mask.lineCap = kCALineCapRound
    mask.fillColor = UIColor.clear.cgColor
    mask.strokeColor = progressColor.cgColor

    let gradient = CAGradientLayer()
    gradient.frame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)
    gradient.startPoint = CGPoint(x: 0, y: 1)
    gradient.endPoint = CGPoint(x: 1, y: 1)
    gradient.colors = [UIColor.white, UIColor.blue]

    gradient.mask = mask

    layer.addSublayer(gradient)

我不明白为什么它不起作用。

【问题讨论】:

    标签: swift cashapelayer cagradientlayer


    【解决方案1】:

    你只是忘记了 CALayer 总是使用 CGColor。

    gradient.colors = [UIColor.white.cgColor, UIColor.blue.cgColor]
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-08-29
      • 2018-09-18
      • 1970-01-01
      • 2012-11-06
      • 2015-03-23
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多