Gire una vista UIV en su eje X (eje horizontal)

Quería girar una UIView en su eje horizontal para 360 grados y luego actualizar el contenido en la vista. Estaba buscando soluciones en esto. Encontré una pareja aquí n. Esto es lo que salí.

[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionTransitionNone animations:^{ self.tableView.layer.transform = CATransform3DMakeRotation(M_PI,1.0,0.0,0.0); } completion:^(BOOL finished){ NSLog(@"Finished first pi"); [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionTransitionNone animations:^{ self.tableView.layer.transform = CATransform3DMakeRotation(M_PI,1.0,0.0,0.0); } completion:^(BOOL finished) { NSLog(@"Finished second pi"); }]; }]; 

Esto voltea la vista pero solo en 180 grados. Quiero que cambie una vez más para que pueda ver la vista normalmente …

Ambos, mis NSLogs, se muestran uno tras otro. Estoy seguro de que me falta algo aquí. Cualquier ayuda sería útil …

Gracias

En su bloque de finalización intente concatenar la nueva transformación con la transformación actual.

 self.tableView.layer.transform = CATransform3DConcat(self.tableView.layer.transform, CATransform3DMakeRotation(M_PI,1.0,0.0,0.0)); 

Debería verificar esta respuesta ¿Cómo hacer que una CATransform3dMakeRotation gire para otro lado? Y cadena juntos

Creo que su problema está relacionado con: "Cuando está trabajando con una transformación directamente, Core Animation interpolará la transformación del valor actual a la transformación especificada. Encontrará la ruta más corta para llegar a esa transformación, lo que restringirá la dirección de animation. Si intenta animar la misma propiedad de transformación dos veces, el segundo valor simplemente anulará el primero, no combinará las dos transformadas juntas ".

utilizar esta:-

  rotatingView.layer.anchorPoint = CGPointMake(0.0f, 0.0f); rotatingView.center = CGPointMake(0, (rotatingView.center.y - (rotatingView.bounds.size.height/2.0f))); rotatingView.center = CGPointMake(0, (rotatingView.center.y- (rotatingView.bounds.size.height/2))); // start the Page Open [UIView beginAnimations:@"Animation" context:nil]; [UIView setAnimationDuration:13.0]; // set angle as per requirement [rotatingView.layer setValue:[NSNumber numberWithInt:280] forKeyPath:@"transform.rotation.x"]; [UIView commitAnimations]; 

Solo tienes que cambiar tu código de 1.0 a 0.0 dentro del bloque de finalización y woohoo todo listo.

  [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionTransitionNone animations:^{ self.tableView.layer.transform = CATransform3DMakeRotation(M_PI,1.0,0.0,0.0); } completion:^(BOOL finished){ NSLog(@"Finished first pi"); [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionTransitionNone animations:^{ self.tableView.layer.transform = CATransform3DMakeRotation(M_PI,0.0,0.0,0.0); } completion:^(BOOL finished) { NSLog(@"Finished second pi"); }]; }]; 

También puede acercarse a esto usando las opciones de animation .Repeat y .Autoreverse + count de repetición de la animation de configuration. Aquí hay un ejemplo en Swift:

  UIView.animateWithDuration(time, delay: 0, options: [.Repeat, .Autoreverse], animations: { UIView.setAnimationRepeatCount(3) self.view.layer.transform = CATransform3DMakeRotation(CGFloat(M_PI), 1, 0, 0) }) { (completed) in // completion }