Подтвердить что ты не робот

Как я могу реплицировать анимацию мусора Mail.app

В моем приложении для iPhone я поместил UIBarBUtton типа UIBarButtonSystemItemTrash в свой UIToolBar. При нажатии, я хотел бы воспроизвести анимацию Mail.app: ящик открывается, UIView сбрасывается и влетает в него.
Есть ли способ получить доступ к этой анимации через iPhone SDK?

В настоящее время я использую пользовательскую анимацию, но есть некоторые ограничения; например, я не могу анимировать сам бит. Есть ли у вас предложения? Образцы кода?

Cheers,
Davide

4b9b3361

Ответ 1

Используйте тип suckEffect для анимации. Также: spewEffect, genieEffect, unGenieEffect, twist, tubey, swirl, cameraIris, cameraIrisHollowClose, cameraIrisHollowOpen, rippleEffect, charminUltra, zoomyIn и zoomyOut. Не работает в симуляторе.

CATransition *animation = [CATransition animation];
animation.type = @"suckEffect";
animation.duration = 2.0f;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
view.opacity = 1.0f;
[view.layer addAnimation:animation forKey:@"transitionViewAnimation"];

Примечание: фрагмент кода был вытащен из большей базы кода. Надеюсь, это сработает:)

Ответ 2

Просто добавьте информацию:

  • Вы можете использовать "suckEffect" со стандартным +[UIView setAnimationTransition:forView:cache:]. Просто передайте номер 103 переменной animationTransition. Это не приведет к тому, что Apple отклонит ваше приложение: p
  • "spewEffect", "genieEffect", "unGenieEffect" и т.д. больше не существуют на iPhoneOS 3.x. Единственный недокументированный переход - "куб" (-), "rippleEffect" (110), три эффекта "cameraIris" (105,106,107) и "suckEffect" (103).

Подробнее см. http://www.iphonedevwiki.net/index.php?title=UIViewAnimationState.

Кроме того, для анимации bin (с закрытым API): http://www.iphonedevwiki.net/index.php?title=UIToolbar#Animating_the_trash_can_icon.

Ответ 3

К сожалению, я думаю, что это будет полностью настраиваемая анимация. Сгибание UIView можно аппроксимировать с помощью Core Animation, возможно, добавив перспективу к CATransform3D подстилающего слоя UIView, чтобы исказить UIView в трапецию, которая всасывается в корзину.

Что касается мусора, вы можете создать UIBarButtonItem, используя initWithCustomView:, который может позволить вам вставить пользовательский UIView, который имеет анимированный trashcan. Похоже, корзина мусора имеет два элемента: основание и крышку, которые вращаются независимо, чтобы открыть и закрыть банку. Нарисуйте PNG для обоих, сделайте для них UIImageViews и сделайте их подвидными для пользовательского представления UIBarButtonItem. Для открытия и закрытия применяйте к ним вращательные преобразования для анимации подзонов.

Ответ 4

Я не уверен, что это ответ, но здесь является lib, который делает эффект "genie", поэтому он очень похож на то, что вы хочу достичь.

CGRect endRect = CGRectMake(30, 40, 50, 60);
[view genieInTransitionWithDuration:0.7 
                    destinationRect:endRect 
                    destinationEdge:BCRectEdgeTop 
                         completion:^{
                            NSLog(@"I'm done!");
                          }];

Genie IN