2012-02-28 10 views
21

En iOS, ¿cómo puede uno llamar brevemente la atención a un objeto en la pantalla? Supongamos que crea un resplandor breve o hace aparecer una sombra y luego desaparece.¿Lista ejemplos de cómo "llamar brevemente la atención" sobre un objeto en la pantalla en iOS?

Para los fines de esta pregunta, definamos "objeto en pantalla" como una instancia de UIImageView.

Además, si es posible, brinde un ejemplo de cómo llamar la atención sobre un botón.

+0

Puede usar la animación implícita. Primero inhabilite la animación implícita y establezca la propiedad que desea animar al estado "llamar la atención" (¿fondo más brillante? ¿Borde rojo?). Vuelva a habilitar la animación, restablezca la propiedad al nivel normal y vuelva. Su objeto irá inmediatamente al estado "resaltado" y luego lentamente volverá a la normalidad. – dasblinkenlight

+0

@dasblinkenlight, ¿podría darnos un ejemplo? – JAM

+0

El tipo de ejemplo depende de su objeto: proporcione más detalles al respecto. ¿Es un 'UIImageView', un' UIButton', un 'CALayer', etc.? El código sería ligeramente diferente para diferentes tipos de objetos. – dasblinkenlight

Respuesta

9
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.1f]; 
yourView.transform = CGAffineTransformMakeScale(1.1, 1.1); 
[UIView commitAnimations]; 

O, por supuesto, el Lo mismo con una animación de bloques. Y después de la atención se alejó de su vista se puede utilizar:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.1f]; 
yourView.transform = CGAffineTransformIdentity; 
[UIView commitAnimations]; 
8

Aquí está una animación simple salto ...

- (void)drawAttn 
{ 
float jumpHeight = 20.0; 

CGPoint originalPoint = objectForAttn.center; 
CGPoint jumpPoint = CGPointMake(objectForAttn.center.x, objectForAttn.center.y - jumpHeight); 
    [UIView animateWithDuration:0.20 delay:0.0 options:UIViewAnimationOptionAutoreverse animations:^{ 
     [objectForAttn setCenter:jumpPoint]; 

    } completion:^(BOOL finished) { 
     /* do other stuff after hop */ 
    }]; 
} 
4

Mi QCount aplicación (gratis en la tienda, pulse en un "mal" número 3 veces) utiliza una animación de fundido de la siguiente manera:

(nota que escribí cuando era realmente nuevo en iOS, por lo que es probable que haya una forma más compacta para escribirlo)

aLabel = // a UILabel I get from somewhere 
    aColor = aLabel.backgroundColor; 
    [UIView animateWithDuration:0.2 
          delay: 0.0 
         options: UIViewAnimationOptionCurveEaseOut 
        animations:^{ 
         aLabel.alpha = 0.0; 
        } 
        completion:^(BOOL finished){ 
         // Wait .2 seconds and then fade in the view 
         [UIView animateWithDuration:.2 
               delay: 0.0 
              options:UIViewAnimationOptionCurveEaseIn 
              animations:^{ 
                aLabel.alpha = 1.0; 
              } 
              completion:nil]; 
        }]; 
+1

Puede quitar el retraso y el segundo bloque de finalización (nil) para hacerlo un poco más pequeño rápidamente. Aparte de eso, creo que está bien. –

+1

Utilice UIViewAnimationOptionAutoreverse para su opción y el alfa volverá a cambiar automáticamente. – Thomas

17

La mayoría del código lista de las personas, pero me quedo con la descripción de algunos ejemplos;

  • que he visto objetos crecen brevemente y se contraen de nuevo a su tamaño normal para llamar la atención
  • Bejeweled (un juego de PopCap) permite diamantes brevemente 'brillo' (como si la luz del sol pasó por encima de ella) para darle una indirecta sutil
  • he visto ciertas aplicaciones utilizan una mano o un punto personaje ficticio a un determinado objeto brevemente

Y, por supuesto, siempre se puede introducir un clip de hablar que le diga qué es lo que. enter image description here

+3

+1 para hacer referencia a Clippy: D – Sam

4

Hay muchas opciones: saltar, subrayar, vibrar, parpadear, girar, escalar, oscurecer, y sus combinaciones.

Pero IMO, el efecto brillo en el texto "deslizar para desbloquear" es excelente.

Puede verificarlo aquí: iPhone "slide to unlock" animation

0

quería llamar la atención sobre una etiqueta cuyo valor había cambiado. Esta animación simple produce una bonita animación 'I've changed' ...

//copy the label 
    UILabel *newPageLabel = [[UILabel alloc] initWithFrame:_countLabel.frame]; 
    [newPageLabel setFrame:CGRectOffset(newPageLabel.frame, 0, 0)]; 
    newPageLabel.text = _countLabel.text; 
    newPageLabel.textAlignment = _countLabel.textAlignment; 
    newPageLabel.backgroundColor = _countLabel.backgroundColor; 
    newPageLabel.textColor = _countLabel.textColor; 
    newPageLabel.font = _countLabel.font; 

    //scale and fade out the copied label 
    [self.navigationController.toolbar addSubview:newPageLabel]; 
    [UIView animateWithDuration:0.5 
          delay:0.0 
         options:UIViewAnimationOptionLayoutSubviews 
        animations:^{ 
         newPageLabel.transform = CGAffineTransformMakeScale(2,2); 
         newPageLabel.alpha = 0; 
        } 
        completion:^(BOOL finished){ 
         [newPageLabel removeFromSuperview]; 
        } 
    ]; 
Cuestiones relacionadas