Estoy tratando de girar algunas UIView alrededor de su centro, por lo que el código simple es algo como
(en pseudocódigo):

[UIView beginAnimations:@"crazyRotate" context:nil];
[UIView setAnimationDuration:1.0];
someview.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations]

ahora si puedo configurar el ángulo de decir M_PI/2 la cosa gira muy bien.
si lo puse a 2*M_PI, así que no hace «nada». Puedo entender que la matriz se traduce a algo que no hace nada (rotación de 360 significa «permanecer» en un sentido),
sin embargo, quiero girar 5 veces (creo que de un periódico girar la escala que viene en efecto-yo no soy grande en la que describe, espero que alguien entienda).
Así, he intentado añadir ajuste de ángulo de 180 grados (M_PI) y añadir un anidada animatationBlock.
pero supongo que ya soy configuración de la misma propiedad (someview.transition) de nuevo ignora que de alguna manera).
Traté de configuración de número de repeticiones de la animación a 2 con ángulo de M_PI pero parece girar 180, volviendo a la posición recta y, a continuación, iniciar el girar de nuevo.

Por lo tanto, estoy un poco fuera de ideas,
cualquier ayuda apreciada!
–t

también puedes empezar por aquí: github.com/jonasschnelli/UIView-i7Rotate360 muy fácil de implementar y de cambio.
posibles duplicados de UIView Infinito 360 grados de rotación de la animación?

OriginalEl autor | 2009-02-05

4 Comentarios

  1. 36

    Puede utilizar la siguiente animación en el UIView la propiedad de capa. Lo he probado.

    UIView *viewToSpin = ...;    
    CABasicAnimation* spinAnimation = [CABasicAnimation
                                      animationWithKeyPath:@"transform.rotation"];
    spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
    [viewToSpin.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
    ¿Cómo puedo frenar esta animación?
    Para la animación consideraciones de sincronización, consulte el material de referencia para el CAMediaTiming Protocolo, que CABasicAnimation implementa. En particular, probablemente desea establecer la ‘duración’ de la propiedad. El código anterior es el uso de la duración predeterminada de 0.25 segundos.

    OriginalEl autor Jason Medeiros

  2. 6

    Como Brad Larson indicado, usted puede hacer esto con un CAKeyframeAnimation. Por ejemplo,

    CAKeyframeAnimation *rotationAnimation;
    rotationAnimation = 
       [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
    
    rotationAnimation.values = [NSArray arrayWithObjects:
                                [NSNumber numberWithFloat:0.0 * M_PI], 
                                [NSNumber numberWithFloat:0.75 * M_PI], 
                                [NSNumber numberWithFloat:1.5 * M_PI], 
                                [NSNumber numberWithFloat:2.0 * M_PI], nil]; 
    rotationAnimation.calculationMode = kCAAnimationPaced;
    rotationAnimation.removedOnCompletion = NO;
    rotationAnimation.fillMode = kCAFillModeForwards;
    rotationAnimation.timingFunction = 
       [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    rotationAnimation.duration = 10.0;
    
    CALayer *layer = [viewToSpin layer];
    [layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];

    Puede controlar la duración del total de la animación con el rotationAnimation.duration de la propiedad, y la aceleración y desaceleración (y el cálculo de los pasos intermedios) con el rotationAnimation.timingFunction propiedad.

    OriginalEl autor Jeff Hay

  3. 1

    Consiguiendo un continuo girar efecto es un poco complicado, pero yo describir un medio para hacerlo aquí. Sí, el Núcleo de la Animación parece a optimizar se transforma en el más cercano final de la posición dentro del círculo unidad. El método que describo hay cadenas de un par de la mitad-animaciones de rotación juntos para hacer giros completos, aunque se nota un ligero tartamudeo en el envío a partir de una animación a la siguiente.

    Tal vez un CAKeyframeAnimation construido con ellos la mitad de la rotación de los valores sería el camino a seguir. Entonces también se puede controlar la aceleración y desaceleración.

    OriginalEl autor Brad Larson

  4. 1
    CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    animation.fromValue = [NSNumber numberWithFloat:0.0f];
    animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
    animation.duration = 8.0f;
    animation.repeatCount = INFINITY;
    [self.myView.layer addAnimation:animation forKey:@"SpinAnimation"];

    OriginalEl autor daniel kilinskas

Dejar respuesta

Please enter your comment!
Please enter your name here