2010-09-08 38 views
5

Próbuję wprowadzić przejście w curl strony za pomocą UIImageView w oknie. Ten kod jest w moim główne metody Init:Animacja przejścia między stronami w telefonie iPhone

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationDelay:delay]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDidStopSelector:@selector(animCompleteHandler:finished:context:)]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:splashImage cache:YES]; 

splashImage.frame = CGRectMake(-320, 0, 10, 10); 
//[splashImage removeFromSuperview]; 

[UIView commitAnimations]; 

Obraz ożywia położenie i rozmiar, ale bez zwijania. Jeśli odkomentuję removeFromSuperView, po prostu zniknie natychmiast. Jakieś pomysły?

UPDATE:

zmienili kod więc używa Lars fantasticlly schludny sposób wyzwalania animację i tym animacji i oddzwanianie ...

[UIView animateWithDuration:1.5 
         delay:delay 
        options: UIViewAnimationTransitionCurlUp 
       animations:^{splashImage.alpha = 0;} 
       completion:^(BOOL finished){[splashImage removeFromSuperview];} 
]; 

Niestety curl strona po prostu nie zdarza . To jednak zanika.

Nie jestem pewien, czy to ma coś wspólnego ze składnią lub fakt, że SplashImage jest UIImageView klasa w UIWindow przedmiotu moim głównym widoku. Być może musi to być UIView, aby utworzyć przejście.

Odpowiedz

8

Spróbuj czegoś takiego:

[UIView transitionWithView:splashImage 
     duration:1.5 
     options: UIViewAnimationOptionTransitionCurlUp 
     animations^{ 
      splashImage.frame = CGRectMake(-320, 0, 10, 10); 
     } 
     completion:^(BOOL finished){ 
      [splashImage removeFromSuperview]; 
      //animCompleteHandlerCode.. 
     } 
]; 

nie testowano a może jakieś błędy składniowe, ale daje to spróbować!

A może to jest lepsze:

[UIView animateWithDuration:1.5 
     delay:delay 
     options: UIViewAnimationOptionTransitionCurlUp 
     animations^{ 
      splashImage.frame = CGRectMake(-320, 0, 10, 10); 
     } 
     completion:^(BOOL finished){ 
      [splashImage removeFromSuperview]; 
      //animCompleteHandlerCode.. 
     } 
]; 
+0

Nie próbowałem tego jeszcze, ale jestem zaintrygowany przez twój kod! Co robi ^? Czy jest to sposób na osadzanie funkcji? –

+1

To są nowe bloki na iOS 4.0. Zachęcam do czytania na blokach. Świetny dodatek do iOS. Sprawdź to: http://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/index.html Jeśli dobrze rozumiem twój kod, to co chcesz zrobić, to zwijać stronę i jednocześnie przenosić i skalować? – LarsJK

+0

dobrze przenoszenie i skalowanie nie jest tak naprawdę ważne ... Chciałem tylko wywołać przejście. Używałem tej transformacji tylko do sprawdzenia, czy działa. Potrzebuję tylko obrazu powitalnego, aby strona się zwijała. Aby wywołać to jako przejście, muszę coś zrobić z widokiem. Czy to działałoby z "ukrytym"? Tak czy inaczej, mam teraz kilka testów. Dziękuję za twój komentarz. –

1

@Larsaronen: Dzięki za przykładach, to było dokładnie to, co potrzebne! Chciałem tylko zwinąć stronę, gdy obrazy są wyświetlane po raz pierwszy, więc użyłem alfa 1.0 zamiast 0, i ustaw callback połączenia na zero:

// set a page curl animation for the specified UIImageView control 
- (void) setAnimationPageCurl:(UIImageView *)imageView { 

    [UIView transitionWithView:imageView 
         duration:1.5 
         options:UIViewAnimationOptionTransitionCurlDown 
        animations:^ { imageView.alpha = 1.0; } 
        completion:nil]; 
} 
Powiązane problemy