Вы можете отслеживать текущее значение преобразования, посмотрев на атрибут presentationLayer на CALayer. Уровень представления содержит текущие значения в середине анимации.
IE:
CALayer *pLayer = [layer presentationLayer];
NSLog(@"Currently at %@", [pLayer valueForKeyPath:@"transform.rotation.z"]);
Чтобы остановить анимацию на 3, я бы взял слой, удалил анимацию 0-5, запустил новую анимацию, используя fromValue из presentationLayer и toValue, равное 3. Установка продолжительности анимации зависит от поведения анимации, но если вы хотите, чтобы анимация занимала 3/5 секунды, чтобы завершиться, если она останавливается на 3, то вы найдете, насколько далеко вы находитесь в анимации, посмотрев, насколько далеко вы находитесь в анимации 0-5. , затем вычитая это из 3/5 секунды, чтобы получить остаток времени, которое вы хотите использовать.
Я узнал тонну CoreAnimation от Маркуса Зарры на конференции «Голоса, которые имеют значение для iPhone». Я бы порекомендовал следить за его блогом и покупать его книгу!