2009-11-18 10 views
5

come posso implementare l'animazione che vediamo sullo schermo coverflow dell'app iPhone Music? quando fai clic su una vista piccola, si ribalta e si adatta a un'altra vista? come posso fare questo? Posso usare l'animazione core per capovolgere e scalare una vista, ma come posso eseguire la transizione a un'altra vista? graziecome implementare un'animazione di transizione con vista iPhone sia con il flipping che con il ridimensionamento?

+0

Vedere questa risposta: http://stackoverflow.com/questions/5511514/custom-transition-traw-two-uiviews/8931492#8931492 – aoakenfo

+0

Ho risposto a una domanda simile qui (con codice): http: // stackoverflow. it/questions/19171918/how-can-i-flip-and-enlarge-a-uiview-it-at-the-same-like-ios-7-ipad-app-stor –

risposta

14

Avete bisogno di un UIView come contenitore per i due UIView s (frontside/retro) e quindi rimuovere/aggiungere questi dal/al contenitore come subviews, mentre facendo le animazioni in mezzo:

UIView *flipContainer; 
UIView *frontSide; 
UIView *backSide; 
    //... 
-(void)turnUp 
{ 
    [backSide removeFromSuperview]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:flipContainer cache:YES]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.2, 1.2); 
    flipContainer.transform = transform; 
    [UIView commitAnimations]; 
    [flipContainer addSubview:frontSide]; 
} 
-(void)turnDown 
{ 
    [frontSide removeFromSuperview]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:flipContainer cache:YES]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1, 1); 
    flipContainer.transform = transform; 
    [UIView commitAnimations]; 
    [flipContainer addSubview:backSide]; 
} 
+0

ha funzionato come un fascino. Grazie! –

+0

Ha! Hai invocato '+ [UIView setAnimationDuration:]' due volte! –

0

I' Sto provando il codice esatto che stai facendo - ottengo un effetto zoom ma non giro. L'unica differenza è che appena prima del codice di turnUp aggiungo il flipContainer (con la visualizzazione posteriore), quindi può essere capovolto.

// construct animation container 
self.flipContainer = [[FlipContainer alloc] init]; 
[self.flipContainer.view setFrame:CGRectMake(clickedSquareX, clickedSquareY, 200, 200)]; 
[self.flipContainer.view addSubview:self.backside.view]; 
// add animation container 
[self.myParentView.view addSubview:self.flipContainer.view]; 
// PROCEED to your turnUp code 

La ragione per cui sto facendo questo è che ho un gruppo di immagini in un UIScrollView orizzontale e così all'immagine 'simulare' un 200x200 lanciare sopra e lo zoom per mostrare i dettagli aggiungo la mia flipContainer con la parte posteriore che mostra il immagine esatta sul punto esatto dell'immagine premuta. Dovrebbe funzionare non dovrebbe? Un po 'di confusione per me è la prima riga del codice di risvolto che fate:

[backSide removeFromSuperview]; 

..che eliminerebbe la vista ho solo aggiunto.

Non sono sicuro se questo è il posto giusto per inserire questa domanda - scusa se non lo è!

Problemi correlati