CGAffineTransformRotate を使用して、タッチ ジェスチャに基づいて、親ビューに追加されたカスタム ビュー (VIEWA) を回転させようとしています。すべてが正常に機能しています。これで、親ビューに別のビュー (VIEWB) が追加されました。このビューは、回転中に VIEWA のコーナーによってトレースされたパスをたどる必要があります。
私がしたことは、VIEWA変換マトリックスからVIEWBの新しい座標を計算し、サブビューを翻訳することでした。すなわち
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です):