6
votes

Meilleure façon de vibrer un article d'interface utilisateur?

J'essaie de vibrer / secouer un élément UI, à savoir un contrôle, comme s'il était frappé et résonne. Je peux utiliser une animation de base pour le secouer verticalement, horizontalement ou les deux, par un pixel: xxx pré>

ou je peux faire pivoter par un petit arc en arrière autour de l'axe Z (-M_PI * 0,02 et M_PI * 0.02): P>

CABasicAnimation* scaleAnimation;
scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.fromValue = [NSNumber numberWithFloat: 0.95 ];
scaleAnimation.toValue = [NSNumber numberWithFloat: +1.05 ];
scaleAnimation.duration = 0.1;
scaleAnimation.cumulative = NO; 
scaleAnimation.repeatCount = 10.0; 
scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];

[((UIControl *) sender).layer addAnimation:scaleAnimation forKey:@"scaleAnimation"];


0 commentaires

3 Réponses :


4
votes

Vous pouvez utiliser une animation de caractères clés sur la position de la couche. Ceci est subjectif bien sûr parce que je ne suis pas sûr de ce que vous considérez "agréable". L'animation Shake que vous obtenez lorsque vous entrez incorrectement votre mot de passe OS X dupliquée à l'aide de l'animation de base dans cette Blog Post sur Cocoa est ma petite amie . Je ne sais pas si c'est ce que vous allez, mais c'est une alternative.

meilleures salutations,


1 commentaires

Oui. Mais vous pouvez créer une animation de caractères clés qui utilise un chemin de la même manière animant le champ "Position" qui est un CGPoint.



6
votes

Je secoue une de mes saisies-vues après une mauvaise entrée de l'utilisateur en utilisant: xxx

Ceci semble assez naturel, j'ai reçu ce code de certains fils Internet que je ne peux pas Rappelez-vous.


0 commentaires

2
votes

Une mise à jour de Bersaelor's Nice Little Shake Répondez ici pour utiliser UIView code> Block Animations, Certaines personnes ne savent pas toujours que vous pouvez utiliser automatiquement l'inverse et les comptes répétés dans ceux-ci:

self.transform = CGAffineTransformMakeTranslation(2.0, -2.0);
[UIView animateWithDuration:0.07
                      delay:0.0
                    options:UIViewAnimationOptionAutoreverse
                 animations:^{
                   UIView.animationRepeatCount = 4;
                   self.transform = CGAffineTransformMakeTranslation(-2.0, 2.0);
                 }
                 completion:^(BOOL finished){
                   self.transform = CGAffineTransformIdentity;
                 }];


0 commentaires