Sto sviluppando un gioco che contiene qualche vista (come gioco di carte di memoria) e voglio che quando l'utente tocca una carta questo capovolga e mostri un'altra vista. Uso questo codice:iOS - Capovolgi solo l'animazione per una vista specifica
- (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) {
}];
}
Ogni vista ha un pulsante trasparente che coprono l'intera vista, così quando toccare utente su una vista è come toccare il pulsante. Il pulsante chiama il metodo sopra passando il mittente. All'avvio dell'animazione, la vista viene ruotata, non solo la vista che ottengo dal mittente. Come posso fare?
Forse non è una soluzione diretta ma, si può t ry per estendere UIButton per i pulsanti che hai usato sulle carte e riportare un puntatore debole alla vista della carta, quindi chiamare btn.cardView ti darebbe sicuramente la vista della carta che hai desiderato, se la superview non funziona. –