iphone - examples - Aplicando mĂșltiples transformaciones a un UIView/CALayer
uikit wikipedia (4)
¿Hay algún problema al aplicar múltiples transformaciones a una UIView y su CALayer correspondiente?
Específicamente, ¿puede "mezclar y combinar" CATransform3Ds con CGAffineTransforms sin tener problemas?
¿También hay problemas con la configuración de algunas transformaciones directamente mientras se anima otro cambio de transformación simultáneamente?
¿Hay alguna "regla" sobre cómo se debe hacer esto, o algún patrón de diseño para esto?
La sintaxis ha cambiado ligeramente con Swift 3 y 4. Adaptación de la respuesta de @ whitehawk:
// Rotate 45 degrees
var rotate = CGAffineTransform(rotationAngle: 45 * (.pi / 180))
// Move to the left
var translate = CGAffineTransform(translationX: -50, y: 0)
// Apply them to a view
self.view.transform = translate.concatenating(rotate)
Logro traducir y rotar una imageView al mismo tiempo, de esta manera:
float scaleFactor_x = 2.8;
float scaleFactor_y = 2.45;
imgBigBallBasic.frame = CGRectMake(112, 20, 100, 100);
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(scaleFactor_x, scaleFactor_y);
CGAffineTransform translateTrans = CGAffineTransformMakeTranslation(0, 55);
imgBigBallBasic.contentMode = UIViewContentModeScaleAspectFit;
imgBigBallBasic.transform = CGAffineTransformConcat(translateTrans, scaleTrans);
imgBigBallBasic.frame = CGRectMake(112, 20, 100, 100);
imgBigBallBasic.center = [[imgBigBallBasic window] center];
[UIView commitAnimations];
pix0r tiene razón, pero aquí hay más información sobre esto. Los documentos oficiales para CGAffineTransformConcat () .
Además, aquí hay un ejemplo rápido:
// Rotate 45 degrees
CGAffineTransform rotate = CGAffineTransformMakeRotation(45*(M_PI/180));
// Move to the left
CGAffineTransform translate = CGAffineTransformMakeTranslation(-50,0);
// Apply them to a view
self.view.transform = CGAffineTransformConcat(translate, rotate);
Me doy cuenta de que esto no responde a la pregunta por completo (o se acerca), pero si solo está trabajando con CGAffineTransforms puede usar CGAffineTransformConcat()
para combinar múltiples transformaciones.
Esto funcionará bien cuando algunas transformaciones están animadas y otras no, siempre que se cumplan las transformaciones correctamente. No sé cómo funciona esto cuando también estás haciendo transformaciones de capa.