我正在尝试使用 CGAffineTransformRotate 旋转基于触摸手势在父视图上添加的自定义视图 (VIEWA)。一切正常。现在,我在父视图上添加了另一个视图(VIEWB),它应该在旋转时遵循由 VIEWA 的角跟踪的路径。
我所做的是从 VIEWA 转换矩阵计算 VIEWB 的新坐标并翻译子视图。IE
VIEWA.transform = CGAffineTransformRotate(startTransform, -angleDifference+M_PI_2);
CGFloat cosa = VIEWA.transform.a;
CGFloat msinb = VIEWA.transform.b;
CGFloat sinc = VIEWA.transform.c;
CGFloat cosd = VIEWA.transform.d;
CGFloat newX = VIEWB.center.x * cosa + VIEWB.center.y * msinb;
CGFloat newY = VIEWB.center.x * sinc + VIEWB.center.y * cosd;
CGFloat xdiff = newX - VIEWB.center.x;
CGFloat ydiff = newY - VIEWB.center.y;
VIEWB.transform = CGAffineTransformTranslate(VIEWB.transform, xdiff, ydiff);
但我无法得到我想要的。有人可以帮助我吗?
更新:
这就是我想要做的:(红点是A和黑色弹出是B):