2012-03-03 11 views
6

tal vez no entiendo. Cuando hago¿UIView girada en 45 ° desaparece?

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45)); 

donde RADIAN es

#define RADIANS(degrees) ((degrees * M_PI)/180.0) 

en una simple UIView objeto que va a desaparecer.

Supongo que es solo delgada para ver. Mi impresión es que la vista se está reduciendo en un rango de entre 20 y 45 grados.

¿Qué es? Intenté configurar la vista como opaca. Sin efecto.

Chris

+0

¿Es posible que se esté girando fuera de la pantalla? –

+0

No relacionado pero 'RADIONS' es un nombre horrible para esa definición. No da ninguna indicación de lo que está haciendo o cómo usarlo. –

+0

@ Paul.s eso es una cuestión de estilo, IMO, ese es un buen nombre para una macro, pero lo he visto etiquetado como 'TO_RADIANS', 'DEGREES_TO_RADIANS' y cosas así. Realmente solo depende de lo que necesitas. –

Respuesta

9

Tiene que dejar de ajustar el marco después de la rotación, que provoca el estiramiento no deseado a la matriz de transformación, no estoy seguro de la razón formal por qué, pero tiene algo que ver con Apple mediante su propia sistema de matriz en lugar de matrices tradicionales para representar las traducciones 2D/3D/rotaciones/escala. Estaba teniendo el mismo problema el otro día, para arreglarlo, en lugar de girar esa vista, simplemente lo convertí en un contenedor con la vista real que quería girar dentro, y roté eso.

+3

CGAffineTransform y CATransform3D son matrices tradicionales estándar. Apple no está haciendo nada raro allí. Su problema es que '- [CALayer frame]' es un valor _derived_ - se basa en las propiedades 'position',' bounds', 'anchorPoint', y' transform'. Si cambia la transformación, el marco cambiará. Si luego intentas cambiar el marco, la capa intentará ajustar la posición y los límites del tamaño para que funcione. Solución: no configure el marco. –

+0

Si un CATransform3D es una matriz tradicional, ¿por qué no puedo configurarlo, por ejemplo, una matriz ortogonal tradicional y aún puedo ver mi capa? ¿O una perspectiva uno en eso? Quiero decir que no estoy dudando de ti, pero no lo usan tradicionalmente, ¿por qué .m34 controla algo similar al FOV? Nada de esto es completamente estándar si me preguntas. Pero podría estar equivocado. –

+0

He estado buscando bastante tratando de resolver esto. Tus dos comentarios realmente me ayudaron a entender mi problema. Para cualquier otra persona que se encuentre con esto ... tuve una inicialización en la que quería rotar algunas etiquetas. Tenía esto en viewDidLoad ... Tuve que moverlo a viewDidAppear para que las cosas funcionen correctamente (ya que el marco aún se está configurando hasta después de viewWillAppear). –

Cuestiones relacionadas