Вы можете получить текущее состояние анимирующего слоя, захватив его презентационный слой. Предполагая, что вы не применили никаких других преобразований к слою, вы можете извлечь текущий угол вращающегося слоя, используя следующий код:
CATransform3D rotationTransform = [(CALayer *)[self.layer presentationLayer] transform];
float angle;
if (rotationTransform.m11 < 0.0f)
angle = 180.0f - (asin(rotationTransform.m12) * 180.0f / M_PI);
else
angle = asin(rotationTransform.m12) * 180.0f / M_PI;
В другом неизмененном преобразовании значения m11 и m12 - это координаты, лежащие на единичной окружности, поэтому вы можете использовать тригонометрию для определения угла, который они описывают.
РЕДАКТИРОВАТЬ (18.05.2009): добавлен тип преобразования в CALayer для преодоления предупреждений компилятора и исправлено присвоение имени преобразованию в операциях тригонометрии.