Красивые UIView анимации

2 comments
В IOS появились отличные инструменты - это анимации UIView. Это по факту Cocoa оболочка над CoreAnimation, но с упрощенным интерфейсом. Подробней об этом я писал.
Но в стандартном наборе очень маленький набор функций замедления/ускорения (easing functions), буду их просто называть easing функции.
Для тех кому не понятно, что это за функции немного поясню. Часто нужно, чтоб объект не двигался равномерно, а сначала двигался быстрее, потом замедлялся под конец анимации. Или наоборот. Более наглядно можно на это посмотреть вот тут http://easings.net. Еще их называют tween functions. А эппл это называет Animation Pacing.


Итак, какой набор ease функций есть у нас в стандартном наборе:

UIViewAnimationOptionCurveEaseInOut = 0 << 16, UIViewAnimationOptionCurveEaseIn = 1 << 16, UIViewAnimationOptionCurveEaseOut = 2 << 16, UIViewAnimationOptionCurveLinear = 3 << 16,

Передать их можно в качестве  UIAnimationProperties при анимации.
По факту это отсылка на встроенные CAMediaTimingFunction:

NSString * const kCAMediaTimingFunctionLinear;
NSString * const kCAMediaTimingFunctionEaseIn;
NSString * const kCAMediaTimingFunctionEaseOut;
NSString * const kCAMediaTimingFunctionEaseInEaseOut;
NSString * const kCAMediaTimingFunctionDefault;

Можно добавить свою с помощью функции [CAMediaTimingFunction functionWithControlPoints::::].
Вот тут есть онлайн редактор двух опорных точек для расчета нужной функции:
Как добавить более сложные функций? Самый прямой метод - это создать свою собственную CAMediaTimingFunction и использовать несколько для анимации. Саму анимацию сделать через CAKeyFrameAnimation в которой расчитать каждый шаг анимации. Что-то напободие вот такого:
Но есть более легкий способ. Готовая математика для большинства необходимых ease функций есть в AHEasing и более того, они реализовано с помощью C, которые вы можете использовать не только в Cocoa проектах.
И хорошая библиотека/категория UIView которая позволяет использовать эти функции как UIView анимацию.
Позволяет анимировать все анимируемые свойства UIView.
Вот пример использования:
Достаточно просто и наглядно.
Вот даже видеодемонстрация возможностей:
video

Надеюсь пригодится и облегчит вам жизнь.

2 комментария:

  1. приветствую...
    а как с Вами связаться можно? спасибо
    с уважением, burn

    ОтветитьУдалить