2010-02-20 6 views
5

Quiero rotar un UILabel alrededor del eje X y animarlo. Pero cuando comienza la animación, el texto de la etiqueta se corta en dos, horizontalmente. La mitad inferior desaparece, la mitad superior está girando. ¿Por qué?iphone animation: ¿por qué la rotación de un UILabel alrededor del eje X corta su mitad inferior?

Aquí está el código:

CATransform3D _3Dt = CATransform3DMakeRotation(radians(90.0f), 1.0, 0.0, 0.0); 

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"]; 

transformAnimation.removedOnCompletion = NO; 

transformAnimation.toValue = [NSValue valueWithCATransform3D:_3Dt]; 

transformAnimation.fillMode = kCAFillModeForwards; 

(SDK 3.0)

Respuesta

13

eje X? Eso significa que durante la rotación, la mitad de UILabel tendrá z > 0 (en frente de la pantalla) y la mitad tendrá z < 0 (detrás de la pantalla).

Si hay otras capas en z == 0, cubrirán la mitad de su UILabel z < 0.

Intente aumentar la capa zPosition de su etiqueta.

+0

¡Eso fue todo, gracias! – johnnyMac

+0

Esto es fundamental para las transformaciones 3D que se ejecutan correctamente en escenas de varias capas. +1, especialmente dado que tal punto clave no parece ser mencionado mucho. Cada tutorial debe señalar ajustar la zPosition para evitar la contaminación cruzada ... – SG1

+0

Tuve el mismo problema con las imágenes giradas (UIImageView) cortadas. No sé cuántas horas estaba buscando una solución antes de encontrar esta respuesta. ¡Muchas gracias! –

Cuestiones relacionadas