Что считается лучшей практикой для анимации переходов между видами на iPhone?
Например, ViewTransitions
пример проекта от Apple использует такой код:
CATransition *applicationLoadViewIn = [CATransition animation];
[applicationLoadViewIn setDuration:1];
[applicationLoadViewIn setType:kCATransitionReveal];
[applicationLoadViewIn setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
[[myview layer] addAnimation:applicationLoadViewIn forKey:kCATransitionReveal];
но есть также фрагменты кода, плавающие по сети, которые выглядят так:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];
[myview removeFromSuperview];
[UIView commitAnimations];
Каков наилучший подход? Если бы вы могли предоставить фрагмент, это было бы очень ценно.
ПРИМЕЧАНИЕ: я не смог заставить второй подход работать правильно.
iphone
ios
cocoa-touch
uiview
core-animation
Кит Фитцджеральд
источник
источник
UIView
вместо этого анимацию на основе блоков . По сути, они такие же, какbeginAnimations
и друзья, но используют функции блокировки / закрытия.[UIView transitionWithView:mysuperview duration:0.75 options:UIViewAnimationTransitionFlipFromRight animations:^{ [myview removeFromSuperview]; } completion:nil]
Подробности смотрите в документации по UIView.Я использовал последний для множества легких и легких анимаций. Вы можете использовать его для затухания двух видов, или для затухания одного перед другим, или для затухания. Вы можете снимать вид поверх другого, как баннер, вы можете увеличивать или уменьшать вид ... Я получаю много пробега из
beginAnimation
/commitAnimations
.Не думайте, что все, что вы можете сделать, это:
Вот образец:
Как видите, вы можете играть с альфа-каналом, рамками и даже размерами вида. Тренировка Вы можете быть удивлены его возможностями.
источник
Разница, кажется, заключается в количестве контроля над анимацией.
CATransition
Подход дает больше контроля и , следовательно , больше вещей , чтобы создать, например. функция времени. Будучи объектом, вы можете сохранить его на потом, рефакторинг, чтобы направить на него все ваши анимации, чтобы уменьшить дублирование кода и т. Д.В
UIView
методах класса являются удобными методами для общих анимации, но более ограничены , чемCATransition
. Например, есть только четыре возможных типа перехода (перевернуть влево, перевернуть вправо, свернуться вверх, свернуться вниз). Если вы хотите сделать постепенное усиление, вам нужно будет либо перейти кCATransition's
постепенному переходу, либо настроить явную анимациюUIView
альфа- канала .Обратите внимание, что
CATransition
в Mac OS X позволит вам указать произвольныйCoreImage
фильтр для использования в качестве перехода, но в настоящее время вы не можете сделать это на iPhone, которого нетCoreImage
.источник
Мы можем анимировать изображения в ios 5, используя этот простой код.
источник
В
UIView
документации читайте об этой функции для ios4 +.источник
В любом случае, метод «Блок» предпочтителен в настоящее время. Я объясню простой блок ниже.
Рассмотрим разрезанную ниже. bug2 и bug 3 являются imageViews. Анимация ниже описывает анимацию продолжительностью 1 секунда с задержкой в 1 секунду. Ошибка 3 перемещается из центра в центр ошибки 2. Как только анимация будет завершена, она будет записана как «Центр анимации готов!».
Надеюсь, что это чисто!
источник
Вот код для плавной анимации, может быть полезным для многих разработчиков.
Я нашел этот фрагмент кода из этого урока.
источник
давайте попробуем проверить О Swift 3 ...
источник