38 votes

Comment reproduire l'animation de corbeille de Mail.app

Dans mon application iPhone, j'ai placé un UIBarBUtton de type UIBarButtonSystemItemTrash dans mon UIToolBar. Lorsque j'appuie dessus, j'aimerais reproduire l'animation de Mail.app: le bac s'ouvre, l'UIView se plie et s'envole.
Existe-t-il un moyen d'accéder à cette animation via le SDK pour iPhone?

Actuellement, j'utilise une animation personnalisée, mais il y a des limites; Par exemple, je ne peux pas animer le bac lui-même. Avez-vous une suggestion? Des échantillons de code?

À votre santé,
Davide

35voto

rpetrich Points 25769

Utilisez le type suckEffect sur une animation. Aussi: spewEffect, genieEffect, unGenieEffect, torsion, tube, tourbillonnement, cameraIris, cameraIrisHollowFermer, cameraIrisHollowOpen, ondulationEffet, charminUltra, zoomyIn et zoomyOut. Ne fonctionne pas dans le simulateur.

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

Remarque: l'extrait de code a été extrait d'une base de code plus grande. J'espère que ca fonctionne :)

11voto

KennyTM Points 232647

Juste pour ajouter quelques infos:

  1. Vous pouvez utiliser "suckEffect" avec la norme +[UIView setAnimationTransition:forView:cache:]. Il suffit de passer le numéro 103 de la animationTransition variable. Ce ne sera pas éviter votre application d'être rejeté par Apple bien :p
  2. "spewEffect", "genieEffect", "unGenieEffect", etc. n'existent plus sur l'iPhoneOS 3.x. Le seul sans-papiers transition sur la gauche sont "cube" (--), "rippleEffect" (110), les trois "cameraIris" effets (105,106,107) et "suckEffect" (103).

Voir http://www.iphonedevwiki.net/index.php?title=UIViewAnimationState pour plus de détails.

Aussi, pour animer le bac (avec API privée): http://www.iphonedevwiki.net/index.php?title=UIToolbar#Animating_the_trash_can_icon.

10voto

Brad Larson Points 122629

Malheureusement, je pense que cela va avoir besoin d'être entièrement personnaliser l'animation. Le UIView de pliage peut être approchée à l'aide de Core Animation, peut-être en ajoutant de la perspective à la CATransform3D de la UIView de la couche sous-jacente de fausser la UIView dans un trapèze qui se fait sucer dans la corbeille.

Aussi loin que la poubelle, vous pouvez créer un UIBarButtonItem à l'aide de initWithCustomView: qui peuvent vous permettre d'insérer un personnalisé UIView qui a un animables poubelle. Il ressemble à la corbeille a deux éléments, la boîte de base et le couvercle, qui sont en rotation de manière indépendante pour ouvrir et fermer le pouvez. Tirage Png pour les deux, faire UIImageViews pour eux, et de faire d'eux des sous-vues de la UIBarButtonItem vue personnalisée. Pour l'ouverture et la fermeture, appliquer de rotation transforme à eux pour animer les sous-vues.

4voto

janisz Points 1314

Je ne suis pas sûr que ce soit une réponse, mais voici une bibliothèque qui fait un "effet de génie", donc c'est assez similaire à ce que vous voulez réaliser

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X