Oscuro UIVIA mientras volteaba usando UIVIEWANIMATIONTRANSIONSIRFLIPRIGHTRIGHT -- iphone campo con objective-c campo con core-animation camp Relacionados El problema

Darkening UIView while flipping over using UIViewAnimationTransitionFlipFromRight


4
vote

problema

Español

Estoy usando un bloque de animación estándar para voltear de una vista a otra, como esta:

  [UIView beginAnimations:@"FlipAnimation" context:self]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO]; [UIView setAnimationBeginsFromCurrentState:NO]; [containerView exchangeSubviewAtIndex:1 withSubviewAtIndex:0]; [UIView commitAnimations];   

Durante el curso de la animación, la vista "desde" se oscurece, ya que comienza a voltearse. Ya que estoy usando vistas casi idénticas en ambos lados, que no cubren toda la vista (está destinado a representar una tarjeta física que se está volviendo atrás), esto se ve absolutamente horrible. Uso de [UIColor clearColor] Como la propiedad backgroundColor para cada código no ayudó de un bit a medida que las áreas transparentes parecen oscurecerse también.

¿Alguna idea de cómo podría deshacerme de este efecto oscurecimiento?

Original en ingles

I'm using a standard animation block to flip over from one view to another, like this:

[UIView beginAnimations:@"FlipAnimation" context:self]; [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:NO]; [UIView setAnimationBeginsFromCurrentState:NO]; [containerView exchangeSubviewAtIndex:1 withSubviewAtIndex:0]; [UIView commitAnimations]; 

During the animation's course, the "from" view darkens as it begins to flip over. Since I'm using nearly identical views on both sides which don't cover the whole view (it's meant to represent a physical card being flipped over), this looks absolutely horrible. Using [UIColor clearColor] as the backgroundColor property for every associated UIView didn't help one bit as transparent areas seem to get darkened as well.

Any ideas on how I could get rid of this darkening effect?

        

Lista de respuestas

6
 
vote
vote
La mejor respuesta
 

Parece que tiene que hacer la animación 'a mano', utilizando la animación básica transforma. Dividí la animación en dos partes. Primero giro 'Viewone' la mitad del camino con la animación y 'ViewTwo' a la mitad del camino en la otra dirección sin animación. Cuando se realiza la primera mitad de la animación, hago el resto en el método delegado. Los parámetros de los tuyos pueden variar :)

Skewing es cortesía de alguna otra respuesta de StackOverFlow que encontré.

  - (IBAction)flip:(id)sender {   UIView* viewOne = [self.view.subviews objectAtIndex:0];   UIView* viewTwo = [self.view.subviews objectAtIndex:1];    viewOne.hidden = YES;    CATransform3D matrix = CATransform3DMakeRotation (M_PI / 2, 0.0, 1.0, 0.0);   CATransform3D matrix2 = CATransform3DMakeRotation (-M_PI / 2 , 0.0, 1.0, 0.0);   matrix = CATransform3DScale (matrix, 1.0, 0.975, 1.0);   matrix.m34 = 1.0 / -500;    matrix2 = CATransform3DScale (matrix2, 1.0, 0.975, 1.0);   matrix2.m34 = 1.0 / -500;    viewOne.layer.transform = matrix2;    [UIView beginAnimations:@"FlipAnimation1" context:self];   [UIView setAnimationDuration:1];   [UIView setAnimationDelegate:self];   [UIView setAnimationDidStopSelector:@selector(animationPartOneDone)];   [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];    viewTwo.layer.transform = matrix;    [UIView commitAnimations];     }  -(void)animationPartOneDone {      UIView* viewOne = [self.view.subviews objectAtIndex:0];   UIView* viewTwo = [self.view.subviews objectAtIndex:1];     viewOne.hidden = NO;   viewTwo.hidden = YES;    CATransform3D matrix = CATransform3DMakeRotation (2 * M_PI, 0.0, 1.0, 0.0);    matrix = CATransform3DScale (matrix, 1.0, 1.0, 1.0);    [UIView beginAnimations:@"FlipAnimation2" context:self];   [UIView setAnimationDuration:1];   [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];    viewOne.layer.transform = matrix;    [UIView commitAnimations];        [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];  }   
 

Seems you have to do the animation 'by hand', using Core Animation transforms. I divided the Animation in two parts. First I rotate 'viewOne' half the way with animation and 'viewTwo' half the way in the other direction without animation. When the first half of the animation is done, I do the rest in the delegate method. Yours parameters may vary :)

Skewing is courtesy of some other StackOverflow answer I found.

- (IBAction)flip:(id)sender {   UIView* viewOne = [self.view.subviews objectAtIndex:0];   UIView* viewTwo = [self.view.subviews objectAtIndex:1];    viewOne.hidden = YES;    CATransform3D matrix = CATransform3DMakeRotation (M_PI / 2, 0.0, 1.0, 0.0);   CATransform3D matrix2 = CATransform3DMakeRotation (-M_PI / 2 , 0.0, 1.0, 0.0);   matrix = CATransform3DScale (matrix, 1.0, 0.975, 1.0);   matrix.m34 = 1.0 / -500;    matrix2 = CATransform3DScale (matrix2, 1.0, 0.975, 1.0);   matrix2.m34 = 1.0 / -500;    viewOne.layer.transform = matrix2;    [UIView beginAnimations:@"FlipAnimation1" context:self];   [UIView setAnimationDuration:1];   [UIView setAnimationDelegate:self];   [UIView setAnimationDidStopSelector:@selector(animationPartOneDone)];   [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];    viewTwo.layer.transform = matrix;    [UIView commitAnimations];     }  -(void)animationPartOneDone {      UIView* viewOne = [self.view.subviews objectAtIndex:0];   UIView* viewTwo = [self.view.subviews objectAtIndex:1];     viewOne.hidden = NO;   viewTwo.hidden = YES;    CATransform3D matrix = CATransform3DMakeRotation (2 * M_PI, 0.0, 1.0, 0.0);    matrix = CATransform3DScale (matrix, 1.0, 1.0, 1.0);    [UIView beginAnimations:@"FlipAnimation2" context:self];   [UIView setAnimationDuration:1];   [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];    viewOne.layer.transform = matrix;    [UIView commitAnimations];        [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];  } 
 
 

Relacionados problema

1  Configuración de la capa. Transforma parpadea la capa en la ubicación final y luego lo anima desde la ubicación actual  ( Setting layer transform flashes the layer at the end location then animates it f ) 
En ocasiones al configurar la capa. Transforme a una nueva transformación Veo el parpadeo de la capa en su ubicación terminada, luego anime de su ubicación ac...

75  iPhone "Diapositiva para desbloquear" animación "  ( Iphone slide to unlock animation ) 
¿Alguna idea de cómo Apple implementó la "Slide to Desbloquear" (también, "Diapositiva para apagar" es otra animación de otro ejemplo)? Pensé en algún tipo ...

0  Extracción de la opacidad y el intervalo de tiempo cuando se retira o oculta una capa en la animación central  ( Removing the opacity and time interval when a layer is removed or hidden in core ) 
Parece que cuando elimino la animación de un CALayer o configurarlo para ocultar la capa se desvanece durante aproximadamente la mitad de un segundo antes d...

3  ¿Cómo puedo desencadenar la animación de núcleo en un proxy de animador durante una llamada a ResitesBViewSaleSize?  ( How can i trigger core animation on an animator proxy during a call to resizesub ) 
Tengo algunos nsviews que estoy poniendo en uno de los dos diseños dependiendo del tamaño de mi ventana. Estoy ajustando el diseño cuando la Supervista de s...

7  Animación Core XML o JSON Framework  ( Core animation xml or json framework ) 
¿Alguien sabe si hay un marco para cargar dinámicamente las secuencias de animación de núcleo de algún tipo de archivo de descripción como XML o JSON o inclus...

7  ¿Hay alguna manera de averiguar, ¿cuántos grados se gira una vista actualmente durante una animación?  ( Is there a way to figure out how many degrees an view is rotated currently duri ) 
Estoy aplicando una animación de transformación de rotación en un bloque de animación con esta transformación: CATransform3D rotatedTransform = self.layer....

0  iPhone SDK: Cómo dibujar un rectángulo redondeado con un gradiente semitransparente y una sombra de caída  ( Iphone sdk how to draw a rounded rectangle with a semi transparent gradient and ) 
Estoy experimentando con el dibujo en el iPhone creando manualmente partes de la UI para mi solicitud (en este caso, una gráfica). Esencialmente, quiero dibuj...

5  Combinación de calayer de Correanimation y Catextlayer  ( Coreanimation calayer and catextlayer combination ) 
Estoy jugando con CA últimamente. Ahora estoy tan atascado. Esta es la cosa que quiero animar: En cuanto a ahora, ya tengo la animación del círculo trabaja...

1  Temporizador y eventos de animación Trumping Touchesed Events  ( Timer and animation events trumping touchesended events ) 
He implementado un controlador de tap-and-sostener utilizando un NSTIMER que primero establecí en la sobrecarga de TouchesBegan. Sin embargo, lo que realmen...

2  ¿Manera fácil de desplazarse el texto de desbullir en un botón?  ( Easy way to scroll overflow text on a button ) 
¿Alguien tiene algún ejemplos o recursos en los que podría encontrar información sobre el texto de desplazamiento que es demasiado largo para que se muestre e...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos