У меня возникла ситуация, когда я хотел переместить одну метку по пути Безье, которая работает нормально. Однако, когда я переключаю приложение с переднего плана на задний план и снова на передний план, перемещение происходит неправильно. Я использовал 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? Любая помощь будет великолепна.