swift Export CAShapeLayer animation to gif

278 Views Asked by At

I have a small code on Swift, that makes animation drawing of house. For animation drawing I use CAShapeLayer() based on UIBezierPath():

func setupDrawingLayer() {

    // Stop and remove all other actions and pics on the animationLayer
    clearLayer()

    if let _ = animationLayer{
        let pathRect: CGRect = animationLayer!.bounds.insetBy(dx: 100.0, dy: 100.0)
        let bottomLeft = CGPoint(x: pathRect.minX, y: pathRect.minY)
        let topLeft = CGPoint(x: pathRect.minX, y: pathRect.minY + pathRect.height * 2.0 / 3.0)
        let bottomRight = CGPoint(x: pathRect.maxX, y: pathRect.minY)
        let topRight = CGPoint(x: pathRect.maxX, y: pathRect.minY + pathRect.height * 2.0 / 3.0)
        let roofTip = CGPoint(x: pathRect.midX, y: pathRect.maxY)

        let path = UIBezierPath()
        path.move(to: bottomLeft)
        path.addLine(to: topLeft)
        ...
        path.addLine(to: bottomLeft)
        path.addLine(to: bottomRight)

        let pathShapeLayer = CAShapeLayer()
        pathShapeLayer.frame = animationLayer!.bounds
        pathShapeLayer.bounds = pathRect
        pathShapeLayer.isGeometryFlipped = true
        pathShapeLayer.path = path.cgPath
        pathShapeLayer.strokeColor = UIColor.black.cgColor
        pathShapeLayer.fillColor = nil
        pathShapeLayer.lineWidth = 10.0
        pathShapeLayer.lineJoin = kCALineJoinBevel
        animationLayer!.addSublayer(pathShapeLayer)
        pathLayer = pathShapeLayer
    }
}

I need to export this animation to GIF file. How can I do this? Or may be you know some other solution, that can animate UIBezierPath() drawing with exporting to GIF?

Thank you.

0

There are 0 best solutions below