Когда вы говорите, что «значок всегда заканчивается в верхней части экрана», вы имеете в виду, что анимация запускается, но значок возвращается к верхней части экрана после ее завершения? Если это так, убедитесь, что для анимации fillMode
установлено значение kCAFillModeForwards
, а для свойства removedOnCompletion
- NO
.
Еще один пример анимации CAKeyframe, которая анимирует объект вдоль кривой, см. мой ответ на этот вопрос .