swift将CAShapeLayer动画导出为gif

时间:2016-12-17 19:15:44

标签: ios swift core-animation gif

我在Swift上有一个小代码,可以制作房子的动画。对于动画绘制,我使用基于UIBezierPath()的CAShapeLayer():

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
    }
}

我需要将此动画导出到GIF文件。我怎样才能做到这一点? 或者您可能知道其他一些解决方案,可以通过导出到GIF来动画UIBezierPath()绘图吗?

谢谢。

0 个答案:

没有答案