使用Swift中的动画块在CAShapeLayer中动画strokeEnd

时间:2015-02-28 16:36:41

标签: ios swift animation cashapelayer

我试图找出我在CAShapeLayer中放置的路径的形状。在此函数中,points数组中的点表示正多边形的顶点。但动画并没有发生。它只是出现,完全是动画。

以下是代码:

private func drawShape (point: [(x: Double, y:Double)]) {

    let shapeLayer = CAShapeLayer()

    let shapePath = UIBezierPath()
    shapePath.moveToPoint(CGPoint(x:point[point.count-1].x, y:point[point.count-1].y))

    for i in point {
        shapePath.addLineToPoint(CGPoint(x:i.x, y:i.y))
    }

    shapeLayer.path = shapePath.CGPath

    drawingSurface.layer.addSublayer(shapeLayer)

    shapeLayer.fillColor = UIColor.clearColor().CGColor
    shapeLayer.strokeColor = UIColor.blackColor().CGColor
    shapeLayer.strokeEnd = 0

    UIView.animateWithDuration(30, delay: 0, options: .CurveEaseInOut, animations: {
        shapeLayer.strokeEnd = 1
        }, completion: {finished in println("This Finished")
    })
}

我的期望是它会在我设定的持续时间(此刻为30秒)之间绘制笔划,而是仅显示,完全绘制而没有动画。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我确定你已经找到了答案,但据我所知,animateWithDuration方法只能动画大约8个不同的属性,而EndAngle不是其中之一。只有CAAnimations可以做到这一点。 animateWithDuration和CAAnimations是为不同的东西构建的。

来自ios文档的引用:

  

UIView类的以下属性是可动画的:

     

@property frame

     

@property bounds

     

@property center

     

@property transform

     

@property alpha

     

@property backgroundColor

     

@property contentStretch