2010-03-27 11 views
7

Sto usando questo codice per l'effetto curl Pagina .... Funziona bene in simulatore e dispositivo ... Ma non è (setType: @ "pageCurl") API documentata, questo ha causato respinta dal Developer Program iPhone durante il processo di revisione App Store:Effetto arricciatura pagina Iphone

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"]; 

Così ho cambiato e l'utilizzo come questo

[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]; 

In questo codice di cui sopra voglio fermare pagina effetto riccio a metà strada .. Ma non posso fermarlo a metà strada come le applicazioni di mappe in iPod ... È una soluzione per questo? o Esistono metodi documentati Apple per l'effetto di arricciatura della pagina in ipod touch?

Sto cercando un sacco. ma non ha ricevuto alcuna risposta? Qualcuno può aiutarmi? Grazie in anticipo ...

+0

Ciao. Quindi hai usato il tipo @pagecurl e l'app è stata rifiutata? – user281300

+0

Se desideri eseguire un arricciamento parziale, ma mantieni una barra degli strumenti fissa, come nell'app Mappe di Apple, consulta la mia soluzione [qui] (http://stackoverflow.com/a/11406056/1148702). –

risposta

1

È necessario utilizzare l'effetto di arricciatura della pagina del punto di arresto? Il metodo più semplice consiste nel sostituire l'arricciatura della pagina con un'animazione più semplice (ad esempio slide-out) o semplicemente arricciare l'intera vista verso l'alto.

Si può provare a imbrogliare costruendo la stringa in fase di esecuzione, ad es.

[animation setType:[@"page" stringByAppendingString:@"Curl"]]; 

anche se si sta ancora utilizzando un metodo non documentato.

+0

Mi chiedo se questo potrebbe scivolare attraverso le crepe ... Qualcuno ha esperienza nel fare questo? – coneybeare

9

Se posso?

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

......

0

arricciatura parziale è ufficialmente supportato dal SDK 3.2. Controlla il codice di esempio di Chris. Ulteriori informazioni sono disponibili nel Riferimento di classe UIViewController in Costanti.

+0

Questo non sembra funzionare allo stesso modo di Maps. Ciò significa che puoi applicare questa transizione all'intera vista, ma non una sottoview e quindi lasciare la barra degli strumenti. –

4

Ho trovato una soluzione per aggiungere un UIView a UIViewController utilizzando il blocco Animazione.

m_Container è un UIView che contiene l'animazione della mia vista (auto). self è un UIView.

ATTENZIONE: È necessario disporre di importazione QuartzCore

Per presentare vista con la pagina di animazione riccio è possibile utilizzare:

-(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]; 
         ;} 
    ];  
} 

E quando si vuole nascondere questo punto di vista si può usare:

-(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]; 

         ;} 
    ]; 

} 

Spero di averti aiutato.

+0

Questo codice non è corretto. Gli argomenti di CATransition setTimingFunction: sono di tipo UIViewAnimationCurve, non CAMediaTimingFunction. Utilizzare la funzione CAMediaTimingFunctionWithName: per ottenere una funzione di temporizzazione. – titaniumdecoy

+0

il tuo codice ha risolto il mio problema di arricciatura e uncurl grazie ...... – Leena

+0

nessun problema, sono felice di aiutarti :) – TheRonin

Problemi correlati