使用 Swift 中的动画块在 CAShapeLayer 中为 strokeEnd 设置动画
animating strokeEnd in a CAShapeLayer using an animation block in Swift
我正在尝试描绘我放置到 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 秒)绘制笔划,但相反,它只是出现,完全绘制,没有动画。
有什么想法吗?
我相信您已经找到了答案,但据我了解,animateWithDuration 方法只能为大约 8 个不同的属性设置动画,而 EndAngle 不是其中之一。只有 CAAnimations 可以做到这一点。 animateWithDuration 和 CAAnimations 是为不同的事物构建的。
引自 ios 文档:
The following properties of the UIView class are animatable:
@property frame
@property bounds
@property center
@property transform
@property alpha
@property backgroundColor
@property contentStretch
我正在尝试描绘我放置到 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 秒)绘制笔划,但相反,它只是出现,完全绘制,没有动画。
有什么想法吗?
我相信您已经找到了答案,但据我了解,animateWithDuration 方法只能为大约 8 个不同的属性设置动画,而 EndAngle 不是其中之一。只有 CAAnimations 可以做到这一点。 animateWithDuration 和 CAAnimations 是为不同的事物构建的。
引自 ios 文档:
The following properties of the UIView class are animatable:
@property frame
@property bounds
@property center
@property transform
@property alpha
@property backgroundColor
@property contentStretch