SWIFT 绘制渐变色,虚线,渐变色的虚线

//绘制渐变色

  funcdrawGradients(colors: [Any], locations: [NSNumber]? = [0,1], isHorizontal:Bool? =true) {

    letgradientLayer =CAGradientLayer()

    gradientLayer.frame=self.bounds

    gradientLayer.colors= colors

    gradientLayer.locations= locations

    ifisHorizontal ??true{

      gradientLayer.startPoint=CGPoint(x:0, y:0)

      gradientLayer.endPoint=CGPoint(x:1, y:0)

    }else{

      gradientLayer.startPoint=CGPoint(x:0, y:0)

      gradientLayer.endPoint=CGPoint(x:0, y:1)

    }


    removeCAShapeLayerAndCAGradientLayer(layer: self.layer)

    self.layer.insertSublayer(gradientLayer, at:0)

  }


  //绘制虚线

  funcdrawLineOfDash(lineLength:Int, lineSpacing:Int, lineColor:UIColor) {

    letpath =CGMutablePath()

    path.move(to:CGPoint(x:0, y:0), transform: .identity)

    path.addLine(to:CGPoint(x:self.frame.size.width, y:0), transform: .identity)


    letshapeLayer =CAShapeLayer()

    shapeLayer.bounds=self.bounds

    shapeLayer.position=CGPoint(x:self.frame.width/2, y:self.frame.height)

    shapeLayer.fillColor = UIColor.clear.cgColor

    shapeLayer.strokeColor= lineColor.cgColor

    shapeLayer.lineWidth = self.frame.size.height

    shapeLayer.lineJoin= .round

    shapeLayer.lineDashPattern= [NSNumber(integerLiteral: lineLength),NSNumber(integerLiteral: lineSpacing)]

    shapeLayer.path= path

    removeCAShapeLayerAndCAGradientLayer(layer: self.layer)

    self.layer.addSublayer(shapeLayer)

  }


  //绘制渐变色的虚线

  funcdrawLineOfDashWithGradients(lineLength:Int, lineSpacing:Int, lineColor:UIColor, colors: [Any], locations: [NSNumber]? = [0,1], isHorizontal:Bool? =true) {

    letpath =CGMutablePath()

    path.move(to:CGPoint(x:0, y:0), transform: .identity)

    path.addLine(to:CGPoint(x:self.frame.size.width, y:0), transform: .identity)


    letshapeLayer =CAShapeLayer()

    shapeLayer.bounds=self.bounds

    shapeLayer.position=CGPoint(x:self.frame.width/2, y:self.frame.height)

    shapeLayer.fillColor = UIColor.clear.cgColor

    shapeLayer.strokeColor= lineColor.cgColor

    shapeLayer.lineWidth = self.frame.size.height

    shapeLayer.lineJoin= .round

    shapeLayer.lineDashPattern= [NSNumber(integerLiteral: lineLength),NSNumber(integerLiteral: lineSpacing)]

    shapeLayer.path= path

    letgradientLayer =CAGradientLayer()

    gradientLayer.frame=self.bounds

    gradientLayer.colors= colors

    gradientLayer.locations= locations

    ifisHorizontal ??true{

      gradientLayer.startPoint=CGPoint(x:0, y:0)

      gradientLayer.endPoint=CGPoint(x:1, y:0)

    }else{

      gradientLayer.startPoint=CGPoint(x:0, y:0)

      gradientLayer.endPoint=CGPoint(x:0, y:1)

    }


    gradientLayer.mask?.sublayers?.removeAll()

    gradientLayer.mask= shapeLayer

    removeCAShapeLayerAndCAGradientLayer(layer: self.layer)

    self.layer.addSublayer(gradientLayer)

  }


  func removeCAShapeLayerAndCAGradientLayer(layer: CALayer) {

    layer.sublayers?.removeAll(where: { (sublayer) ->Boolin

      ifsublayerisCAGradientLayer||sublayerisCAShapeLayer{

        return true

      }

      return false

    })

  }

你可能感兴趣的:(SWIFT 绘制渐变色,虚线,渐变色的虚线)