2010-03-27 22 views
7

Estoy usando este código para el efecto Curl de página .... Funciona bien en simulador y dispositivo ... Pero no es (setType: @ "pageCurl") api documentada de manzana, esto hizo que fuera rechazada por el Programa de desarrolladores de iPhone durante el proceso de revisión de la App Store:Efecto curl de página de 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"]; 

así que cambié y utilizando como esto

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

en el código anterior quiero detener la página de rizo en efecto a medio camino .. Pero no puedo detenerlo a medio camino como las aplicaciones de mapas en el iPod ... ¿Esto es una solución para esto? o ¿Hay algún método documentado de Apple utilizado para el efecto de curl de página en el iPod Touch?

Estoy buscando mucho. pero no obtuve ninguna respuesta? ¿Alguien puede ayudarme? Gracias de antemano..plz

+0

Hola. ¿Usaste el tipo @pagecurl y la aplicación fue rechazada? – user281300

+0

Si desea hacer una curvatura parcial, pero mantener una barra de herramientas estacionaria, como en la aplicación Mapas de Apple, consulte mi solución [aquí] (http://stackoverflow.com/a/11406056/1148702). –

Respuesta

1

¿Se debe utilizar el efecto de curvatura de página stop-at-mide-point? El método más fácil es reemplazar el rizo de la página por una animación más simple (por ejemplo, deslizable), o simplemente enrollar toda la vista hacia arriba.

Puede intentar hacer trampas construyendo la cadena en tiempo de ejecución, p.

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

aunque todavía está utilizando un método no documentado.

+0

Me pregunto si esto podría pasar desapercibido ... ¿Alguien tiene experiencia en hacer esto? – coneybeare

9

Si puedo?

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

......

0

encrespa parcial se admite oficialmente desde SDK 3.2. Verifica el código de muestra de Chris. Se puede encontrar más información en la Referencia de clase UIViewController en Constantes.

+0

Esto no parece funcionar igual que Maps. Es decir, puede aplicar esta transición a toda la vista, pero no a una subvista y, por lo tanto, abandonar la barra de herramientas. –

4

Encontré una solución para agregar una UIView a UIViewController usando el bloque de Animación.

m_Container es un UIView que contiene mi animación de vista (self). self es una UIView.

PRECAUCIÓN: Es necesario tener QuartzCore importación

Presentar vista con la página animación de rizo puede utilizar:

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

Y cuando se desea ocultar esta vista se puede utilizar:

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

         ;} 
    ]; 

} 

Espero haberte ayudado.

+0

Este código es incorrecto. Los argumentos para CATransition setTimingFunction: son del tipo UIViewAnimationCurve, no de CAMediaTimingFunction. Use la función CAMediaTimingFunctionWithName: para obtener una función de tiempo. – titaniumdecoy

+0

tu código resolvió mi problema de rizo y se desenrolla gracias ...... – Leena

+0

no hay problema, estoy feliz de ayudarte :) – TheRonin

Cuestiones relacionadas