iphone quartz-graphics transform calayer catransform3d

iphone - CATransform3D rotate hace que la mitad de la imagen desaparezca



quartz-graphics calayer (3)

La configuración de anchorPoint en {0.0, 0.0} funciona (como Liam ya señaló).

Aquí está el fragmento de código completo para cambiar el punto de anchorPoint sin cambiar la posición de la capa en la pantalla:

layer.anchorPoint = CGPointMake( 0.0, 0.0 ); CGPoint position = layer.position; CGSize size = layer.bounds.size; CGFloat posX = position.x - size.width / 2.0; CGFloat posY = position.y - size.height / 2.0; layer.position = CGPointMake( posX, posY );

Estoy utilizando el siguiente código para rotar una imagen, pero la mitad de la imagen (hacia abajo del eje y) que se ha girado "fuera" de la página, desaparece. ¿Como arreglar? heading es en radianes.

CALayer *layer = myUIImageView.layer; CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; rotationAndPerspectiveTransform.m34 = 1.0 / 500; rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, heading, 0.0f, 1.0f, 0.0f); layer.transform = rotationAndPerspectiveTransform;


La solución a esto fue establecer la propiedad zPosition de todas mis capas de manera apropiada. Gracias a @Brad Larson, quien sugirió esta solución en un comentario here . Parece que, cuando comienzas a usar CATransform3D , la jerarquía normal de vistas de zindex establecida por el campo addubview se elimina por la ventana.


layer.anchorPoint = CGPointMake(0.0, 0.0);