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);