В 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:
Можно добавить свою с помощью функции [CAMediaTimingFunction functionWithControlPoints::::].
Вот тут есть онлайн редактор двух опорных точек для расчета нужной функции:![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbmePTB6_Z9K70tda3UorWye7aOx6R7dj9MFJXhDSQNJnqNobaBRflcV8wsXKxenRmNiwdZXPONXkgl3CUdoNPK_LsFqaNovbcGgWnwlh2HEd2jKmHjAuw2JxAedoBkxxQsj7S4J1V-0mB/s320/Screen+Shot+2013-05-29+at+10.49.17+AM.png)
Как добавить более сложные функций? Самый прямой метод - это создать свою собственную CAMediaTimingFunction и использовать несколько для анимации. Саму анимацию сделать через CAKeyFrameAnimation в которой расчитать каждый шаг анимации. Что-то напободие вот такого:
Но есть более легкий способ. Готовая математика для большинства необходимых ease функций есть в AHEasing и более того, они реализовано с помощью C, которые вы можете использовать не только в Cocoa проектах.
И хорошая библиотека/категория UIView которая позволяет использовать эти функции как UIView анимацию.
Позволяет анимировать все анимируемые свойства UIView.
Вот пример использования:
Достаточно просто и наглядно.
Вот даже видеодемонстрация возможностей:
Надеюсь пригодится и облегчит вам жизнь.
Но в стандартном наборе очень маленький набор функций замедления/ускорения (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::::].
Вот тут есть онлайн редактор двух опорных точек для расчета нужной функции:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbmePTB6_Z9K70tda3UorWye7aOx6R7dj9MFJXhDSQNJnqNobaBRflcV8wsXKxenRmNiwdZXPONXkgl3CUdoNPK_LsFqaNovbcGgWnwlh2HEd2jKmHjAuw2JxAedoBkxxQsj7S4J1V-0mB/s320/Screen+Shot+2013-05-29+at+10.49.17+AM.png)
Как добавить более сложные функций? Самый прямой метод - это создать свою собственную CAMediaTimingFunction и использовать несколько для анимации. Саму анимацию сделать через CAKeyFrameAnimation в которой расчитать каждый шаг анимации. Что-то напободие вот такого:
Но есть более легкий способ. Готовая математика для большинства необходимых ease функций есть в AHEasing и более того, они реализовано с помощью C, которые вы можете использовать не только в Cocoa проектах.
И хорошая библиотека/категория UIView которая позволяет использовать эти функции как UIView анимацию.
Позволяет анимировать все анимируемые свойства UIView.
Вот пример использования:
Достаточно просто и наглядно.
Вот даже видеодемонстрация возможностей:
Надеюсь пригодится и облегчит вам жизнь.
пишите на емейл mail@erudenko.com
ОтветитьУдалить
ОтветитьУдалитьHey there! I know this is kind of off topic but I was wondering if you knew where I could find a captcha plugin for my comment form? I'm using the same blog platform as yours and I'm having trouble finding one? Thanks a lot! facebook sign in