2010-03-27 14 views
7

Używam tego kodu do efektu zawijania strony .... Jego praca jest dobra w symulatorze i urządzeniu ... Ale nie jest to (setType: @ "pageCurl") Apple udokumentowane api, spowodowało to, że jest odrzucone przez iPhone Developer Program w trakcie przeglądu App Store:Efekt zwijania strony telefonicznej

animation = [CATransition animation]; 
[animation setDelegate:self]; 
[animation setDuration:1.0f]; 
animation.startProgress = 0.5; 
animation.endProgress = 1; 
[animation setTimingFunction:UIViewAnimationCurveEaseInOut]; 
[animation setType:@"pageCurl"]; 
[animation setSubtype:@"fromRight"]; 
[animation setRemovedOnCompletion:NO]; 
[animation setFillMode: @"extended"]; 
[animation setRemovedOnCompletion: NO]; 
[[imageView layer] addAnimation:animation 
         forKey:@"pageFlipAnimation"]; 

więc zmieniłem i jak za pomocą tego

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationWillStartSelector:@selector(transitionWillStart:finished:context:)]; 
[UIView setAnimationDidStopSelector:@selector(transitionDidStop:finished:context:)]; 
// other animation properties 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp 
         forView:imageView cache:YES]; 
// set view properties 
[UIView commitAnimations]; 

W powyższym kodzie chcę zatrzymać strona curl efekt w połowie drogi .. Ale nie mogę zatrzymać go w połowie jak aplikacje mapowe w ipodzie ... Czy to jest jakaś poprawka do tego? lub Czy są jakieś udokumentowane przez Apple metody efektu zwijania strony w ipodzie touch?

Szukam partii. ale nie dostał żadnej odpowiedzi? czy ktoś może mi pomóc? Z góry dziękuję..plz

+0

Witaj. Więc użyłeś typu @pagecurl i aplikacja została odrzucona? – user281300

+0

Jeśli chcesz wykonać częściowe zwijanie, ale utrzymuj pasek narzędzi w pozycji stacjonarnej, tak jak w aplikacji Mapy firmy Apple, sprawdź moje rozwiązanie [tutaj] (http://stackoverflow.com/a/11406056/1148702). –

Odpowiedz

1

Czy należy użyć efektu zwijania strony punktu stopu? Najprostszą metodą jest zastąpienie zwijania strony prostszą animacją (np. Wysuwaniem) lub po prostu zwinięcie całego widoku.

Możesz próbować oszukiwać, konstruując ciąg w czasie wykonywania, np.

mimo że nadal używasz nieudokumentowanej metody.

+0

Zastanawiam się, czy to przejdzie przez pęknięcia ... Czy ktoś ma doświadczenie w tym? – coneybeare

9

Jeśli mogę?

SampleViewController *sampleView = [[[SampleViewController alloc] init] autorelease]; 
[sampleView setModalTransitionStyle:UIModalTransitionStylePartialCurl]; 
[self presentModalViewController:sampleView animated:YES]; 

......

0

Częściowa curling jest oficjalnie wspierana od SDK 3.2. Sprawdź przykładowy kod Chrisa. Więcej informacji można znaleźć w podręczniku Klasy UIViewController pod pozycją Stałe.

+0

Wygląda na to, że nie działa tak samo jak Mapy. Oznacza to, że możesz zastosować to przejście do całego widoku, ale nie do podglądu, a zatem opuszczając pasek narzędzi. –

4

Znalazłem rozwiązanie, aby dodać UIView do UIViewController za pomocą bloku Animation.

m_Container to UIView, który zawiera moją animację widoku (self). self to UIView.

UWAGA: Trzeba mieć import QuartzCore

Aby przedstawić widok ze strony zwijaj animacji można użyć:

-(void)PresentView 
{ 
    [UIView animateWithDuration:1.0 
        animations:^{ 
         CATransition *animation = [CATransition animation]; 
         [animation setDelegate:self]; 
         [animation setDuration:0.7]; 
         [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; 
         animation.type = @"pageCurl"; 
         animation.fillMode = kCAFillModeForwards; 
         animation.endProgress = 0.65; 
         [animation setRemovedOnCompletion:NO]; 
         [m_container.layer addAnimation:animation forKey:@"pageCurlAnimation"]; 
         [m_container addSubview:self]; 
         ;} 
    ];  
} 

i kiedy chcesz ukryć ten pogląd można użyć:

-(void)HideHelpView 
{ 
    [UIView animateWithDuration:1.0 
        animations:^{ 
         CATransition *animation = [CATransition animation]; 
         [animation setDelegate:self]; 
         [animation setDuration:0.7]; 
         [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; 
         animation.type = @"pageUnCurl"; 
         animation.fillMode = kCAFillModeForwards; 
         animation.startProgress = 0.35; 
         [animation setRemovedOnCompletion:NO]; 
         [m_container.layer addAnimation:animation forKey:@"pageUnCurlAnimation"]; 
         [self removeFromSuperview]; 

         ;} 
    ]; 

} 

Mam nadzieję, że ci pomogłem.

+0

Ten kod jest niepoprawny. Argumenty do CATransition setTimingFunction: są typu UIViewAnimationCurve, a nie CAMediaTimingFunction. Użyj funkcji CAMediaTimingFunctionWithName: aby uzyskać funkcję pomiaru czasu. – titaniumdecoy

+0

Twój kod rozwiązał mój problem zwijania i odklejenia dzięki ...... – Leena

+0

bez problemu Cieszę się, że mogę Ci pomóc :) – TheRonin

Powiązane problemy