2009-06-01 7 views
0

10度回転したビューの中心点を変更すると、指定された中心点の座標がスーパービューの座標系と一致しません。回転ビューをそのスーパービューの座標系に対して相対的に移動するにはどうすればよいですか?

たとえば、y - 50でまっすぐに移動し、水平方向の動きがない場合(x = theRotatedView.center.x)、y方向のシフトが回転します。ビューは上下に移動するだけでなく、上下に移動します。

回転はレイヤーではなくビューで行われます。

サブビューが回転している間に、動きを行うスーパービューにラップすることができます。その後、私は変換に問題はありませんでした。しかし、おそらくいくつかの簡単な解決策があります。ビューが回転していないかのように、回転ビューの中心を移動したいとします。つまり、yを10ずつ減算したい場合は、回転座標を気にせずに移動します。座標系間の変換のためのメソッドや関数があるので、スーパービュー座標で中心点座標を指定するだけで、回転したビューの中心プロパティにこれらを適用すると正しいでしょうか?

答えて

0

座標に変換行列を掛けることができます。これはあなたの座標をあなたの親ビューの "座標空間"に置きます。また、親ビューの逆行列を使用して親ビューにある座標を取得し、それらを「ワールド空間」に戻すこともできます。

http://en.wikipedia.org/wiki/Rotation_matrix

擬似コードの例については、このページにさらに読みます。

1

CGAffineTransformMakeなどのCGAffineTransformメソッドを使用すると、必要な変換を簡単に生成できます。 1つの行列で回転と平行移動を組み合わせることができます。

関連する問題