这是我绘制虚线的代码
func drawLine() {
let shapeLayer = CAShapeLayer()
shapeLayer.bounds = viewDraw.bounds
shapeLayer.position = CGPoint(x: viewDraw.bounds.width/2, y: viewDraw.bounds.height/2)
shapeLayer.fillColor = nil
shapeLayer.strokeColor = ColorConstants.ThemeColor.cgColor
shapeLayer.lineWidth = 3
shapeLayer.lineJoin = CAShapeLayerLineJoin.round // Updated in swift 4.2
shapeLayer.lineDashPattern = [10]
let path = UIBezierPath(roundedRect: viewDraw.bounds, cornerRadius: viewDraw.bounds.size.height/2)
shapeLayer.path = path.cgPath
viewDraw.layer.addSublayer(shapeLayer)
let animation = CABasicAnimation(keyPath: "strokeEnd")
animation.fromValue = 0
animation.duration = 1
shapeLayer.add(animation, forKey: "MyAnimation")
}
现在,按照我的屏幕截图,我想在该虚线无限时间内将蓝点动画化为红点。当蓝点到达红点时,它将再次以蓝点开始。
注意:整个屏幕都是动态的,因此画线也根据屏幕高度而动态
任何帮助将不胜感激
答案 0 :(得分:0)
您快到了
现在,您必须使用具有属性CAKeyframeAnimation
的{{1}}添加动画,您可以在其中传递要设置动画的路径
这是工作示例代码
path
您可以查看本教程以获得更多帮助http://mathewsanders.com/animations-in-swift-part-two/