Вы хотите использовать линейную интерполяцию на парения окружности графики. Как это работает что-то вдоль этих линий:
Final Position = [(Destination Position) * Time/TotalTimeForMovement] + [(Origin Position) * (1-Time/TotalTimeForMovement)]
Допустим, вы хотите, чтобы переместить белое парение изображения из Layer1 до Layer2 в 0,2 секунде, когда пользователь перемещает его/ее мышью от Layer1 к Layer2. В этом случае вам нужно обновить графическое положение каждого кадра, где:
Конечная позиция = [(позиция Layer2) * CurrentTimePassed/0.2] + [(Layer1 Position) * 1- (CurrentTimePassed/0.2)]
Итак, чтобы продолжить этот пример: предположим, что позиция Layer1 равна (0, 0), а позиция Layer2 равна (10, 0). Затем, 0,1 секунды в движение (при условии, что она движется полностью в 0,2 секунды), положение графического объекта должно быть:
= (0, 10) * 0.1/0.2 + (0, 0) * 1-(0.1/0.2)
= (0, 10) * 0.5 + (0, 0) * 1-0.5
= (0, 10) * 0.5 + (0, 0) * 0.5
= (0, 5) + (0, 0)
= (0, 5)
Который halway между Layer1 и Layer2. Надеюсь, это поможет.
В чем проблема в вашем вопросе? Можете ли вы нарисовать эти кнопки, как в этих четырех изображениях выше, но не анимировать движение? Можете ли вы нарисовать два состояния (выбранные и отмененные), но не выбранный на полпути? Вы не можете нарисовать кнопки в первую очередь? –
Я думаю, что могу нарисовать кнопку в статическом состоянии. Моя проблема: 1) Я не знаю, как изменить CoreGraphic, когда выбрана кнопка. 2) Я не знаю, как выполнить анимацию. – Coconuts