2015-01-09 4 views
0

У меня есть два UIButtons, пользователь может выбрать один из них, поэтому, когда один из них выбран, другой не выбран. Я хочу, чтобы оживить эти изменения, как это:UIButtons Анимация

enter image description here

Я знаю, что нужно использовать Core Graphics, но как я могу добиться этого?

Спасибо за вашу помощь

+0

В чем проблема в вашем вопросе? Можете ли вы нарисовать эти кнопки, как в этих четырех изображениях выше, но не анимировать движение? Можете ли вы нарисовать два состояния (выбранные и отмененные), но не выбранный на полпути? Вы не можете нарисовать кнопки в первую очередь? –

+0

Я думаю, что могу нарисовать кнопку в статическом состоянии. Моя проблема: 1) Я не знаю, как изменить CoreGraphic, когда выбрана кнопка. 2) Я не знаю, как выполнить анимацию. – Coconuts

ответ

0

Вы хотите использовать линейную интерполяцию на парения окружности графики. Как это работает что-то вдоль этих линий:

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. Надеюсь, это поможет.

+0

Спасибо за ваш ответ, но мой вопрос находится на основной графической части, я знаю, как для маскировки изображения с текстом, но я не могу его оживить – Coconuts

+0

Я надеюсь, что вы никогда не напишете этот код самостоятельно. На iOS есть две рамки _great_ анимации на двух разных уровнях абстракции, которые делают это за вас. –

Смежные вопросы