CABasicAnimation для странного поведения пути

Я использую CABasicAnimation для анимации от пути к другому.

Я создал вид маски таким образом:

 class Mask: UIView {

     func setup() {
       self.path = UIBezierPath(roundedRect: CGRectMake(0.0, 0.0, self.frame.width, self.frame.height), cornerRadius: 0.0)
       self.path.usesEvenOddFillRule = true
       self.fillLayer.fillColor = self.color.CGColor
       self.fillLayer.opacity = self.opacity
       self.fillLayer.fillRule = kCAFillRuleEvenOdd
       self.layer.addSublayer(self.fillLayer)
       self.holePath = self.getHolePath(frame: frame, center: center, shape: shape, diameter: diameter)
       self.path.appendPath(self.holePath)
       self.fillLayer.path = self.path.CGPath
     }

     func animate() {
       let animation = CABasicAnimation(keyPath: "path")
       animation.duration = duration
       animation.fromValue = self.path.CGPath
       animation.toValue = self.nextPath()
       animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
       animation.fillMode = kCAFillModeForwards
       animation.removedOnCompletion = false
       self.fillLayer.addAnimation(animation, forKey: nil)
     }

}

Вызов функции animate с той же формой не вызывает проблем. В противном случае, вызывая animate с разными формами отверстий, я получаю странное поведение при анимации (gif)

Любой совет?

введите описание изображения здесь


person Luca Davanzo    schedule 18.10.2016    source источник