2009-11-18 7 views
5

Jak mogę zaimplementować animację, którą widzimy na ekranie Coverflow aplikacji Muzyka iPhone'a? kiedy klikasz na mały widok, zmienia się i zmienia na inny widok? jak mogę to zrobić? Mogę użyć animacji głównej, aby odwrócić i skalować widok, ale jak mogę przejść do innego widoku? Dziękijak zaimplementować animację przejścia do widoku iPhone'a zarówno za pomocą rzutowania, jak i skalowania?

+0

Zobacz tę odpowiedź: http://stackoverflow.com/questions/5511514/custom-transition-between-twoiviews/8931492#8931492 – aoakenfo

+0

Odpowiedziałem na podobne pytanie tutaj (z kodem): http: // stackoverflow. com/questions/19171918/how-can-i-flip-and-enlarge-a-uiview-it-at-like-like-ios-7-ipad-app-stor –

Odpowiedz

14

Potrzebujesz UIView jako kontener dla dwóch UIView S (frontside/backside), a następnie usunąć/dodać te z/do kontenera jako subviews robiąc animacje pomiędzy:

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

działa jak czar. dzięki! –

+0

Ha! Wywołałeś '+ [UIView setAnimationDuration:]' dwa razy! –

0

I Próbuję dokładnie kodu, który robisz - dostaję efekt powiększenia, ale nie odwracam. Jedyna różnica polega na tym, że tuż przed kodem turnUp dodałem flipContainer (z wyświetlaniem z tyłu), więc można go przewrócić.

// 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 

Powodem robię to mam kilka zdjęć w poziomym UIScrollView i tak „symulacyjnej” a 200x200 obraz odwracania się i powiększanie, aby pokazać detal dodam moje flipContainer z tyłu przedstawiający dokładny obraz na dokładnym miejscu wciśniętego obrazu. To powinno działać, czyż nie? Nieco mylące dla mnie jest to pierwsza linia kodu podnoszącej zrobić:

[backSide removeFromSuperview]; 

..which zniosłaby widoku Właśnie dodaną.

Nie jestem pewien, czy jest to właściwe miejsce, w którym można umieścić to pytanie - przepraszam, jeśli tak nie jest!

Powiązane problemy