Это возможно (и довольно просто), но я попробовал это только в качестве эксперимента (для сложной анимации, управляемой распознавателем жестов), поэтому я хотел бы услышать, достаточно ли этого решения:
Вам нужно установить скорость вашей анимации на 0 и смещение по времени до момента времени, к которому вы хотите перейти, например,
CABasicAnimation* animation = [CABasicAnimation ...];
animation.speed = 0;
animation.duration = 1;
animation.timeOffset = 0.5;
заставит анимацию перейти к точке, которая была бы через полсекунды.
Теперь вы не можете манипулировать объектами CAAnimation после того, как они были добавлены в слой, поэтому вам нужно будет добавлять новую анимацию каждый раз, когда изменяется смещение (и не забывайте старую, не забывайте;) .