quitar que paralaje para pantalla mueve muevan mueva movimiento mensajes los iconos hacer fondo efectos efecto con como animaciones ios animation uiview flip

que - iOS: animación por volteo solo para vista específica



movimiento iconos iphone (2)

El siguiente código puede ayudar con su problema. Creo que es más limpio que usar un botón transparente.

- (void)viewDidLoad { [super viewDidLoad]; flipped = NO; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; [flipContainerView addGestureRecognizer:tapGesture]; [tapGesture release]; } - (void)handleTap:(UITapGestureRecognizer *)sender { if (sender.state == UIGestureRecognizerStateEnded) { [UIView transitionWithView:flipContainerView duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ if (!flipped) { [frontCard setHidden:YES]; [flipContainerView addSubview:backCard.view]; //or unhide it. flipped = YES; } else { [frontCard setHidden:NO]; [backCard removeFromSuperview]; //or hide it. } } completion:nil]; } }

Estoy desarrollando un juego que contenía algo de vista (como un juego de tarjeta de memoria) y quiero que cuando el usuario toque una carta este voltee y muestre otra vista. Yo uso este código:

- (void)flipCard:(id)sender { UIButton *btn=(UIButton *)sender; UIView *view=[btn superview]; UIView *flipView=[[UIView alloc] initWithFrame:[view frame]]; [flipView setBackgroundColor:[UIColor blueColor]]; [[flipView layer] setCornerRadius:10]; NSLog(@"Flip card : view frame = %f, %f",view.frame.origin.x, view.frame.origin.y); [UIView transitionFromView:view toView:flipView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) { }]; }

Cada vista tiene un botón transparente que cubre toda la vista, por lo que cuando el usuario toca en una vista es como tocar el botón. El botón llama al método anterior que pasa al remitente. Cuando comienza la animación, todas las vistas se invierten, no solo la vista que recibo del remitente. ¿Como lo puedo hacer?


Yo tuve el mismo problema. Después de buscar diferentes publicaciones en Internet, pude encontrar una solución elegante y fácil. Tengo las tarjetas como UIButtons personalizados. En la clase UIButton personalizada, agregué el método que cambia la imagen de fondo con una animación invertida:

-(void) flipCard{ [UIView transitionWithView:self duration:0.3f options:UIViewAnimationOptionTransitionFlipFromRight|UIViewAnimationOptionCurveEaseInOut animations:^{ if (self.isFlipped) { [self setBackgroundImage:[UIImage imageNamed:@"card_back_2.png"] forState:UIControlStateNormal]; }else{ [self setBackgroundImage:[UIImage imageNamed:self.cardName] forState:UIControlStateNormal]; } } completion:NULL]; self.isFlipped = !self.isFlipped; }

Espero que esto ayude a otra persona ya que la primera respuesta ya ha sido aceptada

ACTUALIZAR

Si se encuentra en la vista que contiene esta subvista, el código es:

-(void)flipCard:(APCard*)card{ [UIView transitionWithView:card duration:kFlipTime options:UIViewAnimationOptionTransitionFlipFromRight|UIViewAnimationOptionCurveEaseInOut animations:^{ if (card.isFlipped) { [card setBackgroundImage:[UIImage imageNamed:@"card_back_2.png"] forState:UIControlStateNormal]; }else{ [card setBackgroundImage:[UIImage imageNamed:card.cardName] forState:UIControlStateNormal]; } completion:^(BOOL finished) { if (finished) { //DO Stuff } } ]; card.isFlipped = !card.isFlipped; }