Перемещение UILabel вдоль BezierPath на некоторое время - PullRequest
0 голосов
/ 16 января 2019

У меня возникла ситуация, когда я хотел переместить одну метку по пути Безье, которая работает нормально. Однако, когда я переключаю приложение с переднего плана на задний план и снова на передний план, перемещение происходит неправильно. Я использовал CAAnimation для позиционирования.

    let path = circularBezierPathForLabel().cgPath
    bubbleLabel.center = path.currentPoint
    bubbleLabel.layer.cornerRadius = bubbleLabel.bounds.size.width / 2.0
    bubbleLabel.clipsToBounds = true
    bubbleLabel.layer.masksToBounds = true
    layer.addSublayer(bubbleLabel.layer)

    let textAnimation = CAKeyframeAnimation(keyPath: "position")
    textAnimation.duration = CFTimeInterval(duration)
    let pathValues = self.pathValuesWithVariance(amountOfDegrees: 1)

    var pathPoints = [CGPoint]()
    for path in pathValues {
        let currentPoint = path.currentPoint
        pathPoints.append(currentPoint)
    }
    textAnimation.values = pathPoints
    textAnimation.calculationMode = kCAAnimationLinear
    bubbleLabel.layer.add(textAnimation, forKey: "position")

Есть ли какой-нибудь другой способ решить эту проблему в CAAnimation? Любая помощь будет великолепна.

...