最近使用频繁的CAShaperLayer、CABasicAnimation、CAKeyframeAnimation,突然想实现一个以前APP中波浪线,效果如下:
开始的调查发现,核心在于使用正弦函数sinf生成点,但是没有想到使用CGMutablePathRef以点划线,然后通过不停的改变sinf中的参数以及结果,来实现动画的效果。
我使用了UIBezierPath,但是常规的UIBezierPath只有最多两个controlPoint,例如下面:
path.move(to: _point)
path.addCurve(to: _point1, controlPoint1: con1, controlPoint2: con2)
那么也就能画出一个周期:
看来不能用现成的方法,那么UIBezierPath能不能自己addLine加点呢?我当时贱贱的想,其实是可以的,话不多说,上代码
在新建的WaveView.m中
override func draw(_ rect: CGRect) {
// layer
backg = CAShapeLayer()
backg.lineWidth = 1