Простой способ сделать это - просто применить преобразование к вашему представлению. Секундная стрелка будет переходить из одной позиции в другую. Просто измените вращение на 360/60 = 6 градусов за каждую секунду.
Если вы хотите, чтобы секонд-хенд делал анимацию для каждого тика, вы можете использовать очень быструю анимацию на основе блоков UIView. (скажем, с продолжительностью 1/15 секунды или около того.)
Посмотрите на методы класса UIView, имена которых начинаются с animateWithDuration.
Примерно так:
- (void) moveSecondHand;
{
seconds++;
angle = M_PI*2*seconds/60 - M_PI/2;
CGAffineTransform transform = CGAffineTransformMakeRotation(angle);
[UIView animateWithDuration: 1.0/15
animations: *{
secondHand.transform = transform
}];
}
Вот и все, что нужно. Вы запускаете этот код с помощью таймера раз в секунду. По умолчанию в анимациях используется время замедления, что очень хорошо моделирует физическое движение. Попробуйте разные длительности, но 1/15, вероятно, является хорошей отправной точкой (вы хотите, чтобы это было быстро, но не слишком быстро, чтобы видеть.)
Если вы хотите, чтобы колебание вашей анимации вам понадобилось, вы должны стать намного более изящным и создать группу анимации, которая сначала перемещает ее на полную величину, а затем выполняет повторяющуюся анимацию, которая немного превышает точку остановки, а затем возвращается.