cómo rotar CALayer en un punto seleccionado.cómo rotar CALayer en un punto
Respuesta
CATransform3D transform = CATransform3DIdentity;
transform = CATransform3DTranslate(transform, rotationPoint.x-center.x, rotationPoint.y-center.y, 0.0);
transform = CATransform3DRotate(transform, rotationAngle, 0.0, 0.0, -1.0);
transform = CATransform3DTranslate(transform, center.x-rotationPoint.x, center.y-rotationPoint.y, 0.0);
Dónde center
es el centro de su capa, rotationAngle
es en radianes (positiva es hacia la izquierda), y rotationPoint
es el punto sobre el cual desea rotar center
y rotationPoint
están en el espacio de coordenadas de la vista que contiene.
Consulte la documentación de CA here.
Desea establecer la transformación a un CATransform3DRotate, por ejemplo:
CATransform3D current = myLayer.transform;
myLayer.transform = CATransform3DRotate(current, DEGREES_TO_RADIANS(20), 0, 1.0, 0);
Esto sólo será suficiente para la rotación de la capa alrededor de su centro actual, no una arbitraria punto. – warrenm
- Definir su subcapa que desea girar;
- Establezca su
bounds
,position
en superlayer yanchorPoint
.anchorPoint
tiene coordenadas relativas y apunta aanchorPoint
. Su subcapa girará alrededor de esteanchorPoint
; - Añadir transformación.
Por ejemplo, para girar una subcapa en su punto central superior supervista alrededor de la parte inferior central de subcapa, utilizar este código:
// 1
let rect = CGRect(x: 0,
y: 0,
width: 20,
height: 20)
let path = UIBezierPath(rect: rect)
let sublayer = CAShapeLayer()
sublayer.fillColor = UIColor.green.cgColor
sublayer.path = path.cgPath
superlayer.addSublayer(sublayer)
// 2
sublayer.bounds = rect
sublayer.position = CGPoint(x: superlayer.bounds.size.width/2, y: 0)
sublayer.anchorPoint = CGPoint(x: 0.5, y: 1)
// 3
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.toValue = 2*CGFloat.pi
rotationAnimation.duration = 3
rotationAnimation.fillMode = kCAFillModeForwards
rotationAnimation.isRemovedOnCompletion = false
sublayer.add(rotationAnimation, forKey: nil)
- 1. Rotar punto en el rectángulo
- 2. cómo rotar alrededor de un punto especificado en fabric.js?
- 3. ¿Cómo rotar un vértice alrededor de un cierto punto?
- 4. ¿Cómo rotar UIView, UIImageView o CALayer animated 360˚?
- 5. ¿Cómo rotar el objeto alrededor de un punto usando cuaterniones?
- 6. ¿Girando un CALayer 90 grados?
- 7. Cómo rotar un objeto hacia adelante y hacia atrás en un punto específico?
- 8. Cómo rotar un lienzo en un punto específico usando android.graphics.Camera.rotateX (ángulo)
- 9. Después de rotar un CALayer usando CABasicAnimation la capa salta a su posición no girada
- 10. ¿cómo se copia un CALayer?
- 11. Enmascaramiento de un CALayer con otro CALayer
- 12. ¿Cómo rotar una capa en un punto de ancla específico sin saltear?
- 13. Cómo hacer Un CALayer en el fondo
- 14. Cómo rotar un objeto específico en OpenGL?
- 15. Gire un punto alrededor de un punto con OpenCV
- 16. dibujar CALayer en un CGContext
- 17. Android, ¿Cómo puedo rotar una flecha (imagen) alrededor de un punto fijo?
- 18. ¿Cómo puedo rotar un UIImageView con respecto a cualquier punto (que no sea su centro)?
- 19. Transformar (rotar) un UIBarButtonItem
- 20. Enmascaramiento de un CALayer - iPhone
- 21. ¿Cómo volcar CALayer en CGImageRef?
- 22. ¿Cómo incrustar los contenidos de un CALayer?
- 23. Cómo eliminar un objeto CALayer de animationDidStop?
- 24. Girar un punto por otro punto en 2D
- 25. Rotar un elemento div
- 26. Rotar un UIAlertView
- 27. Cómo rotar MapView?
- 28. Cómo rotar CONSTANTEMENTE un objeto con jquery?
- 29. Cómo rotar UITableViewCellAccessoryDisclosureIndicator?
- 30. Cómo rotar un video con OpenCV
Gracias warrenm funciona ....... –
¡Has salvado mis días! ¡¡Gracias!! –