2012-04-20 16 views
0

transformプロパティを使用してサブビューを回転するには、CGAffineTransformMakeRotationを使用しています。後で、サブビューがどれだけ回転したかを調べる必要があります。私はこれを追跡するために単純に整数を使うことができるが、サブビューの現在のローテーションを取得する簡単な方法はあるのだろうか?iOSサブビューの回転を取得する

+0

重複する質問が見つかりました:http://stackoverflow.com/questions/2051811/iphone-sdk-cgaffinetransform-getting-the-angle-of-rotation-of-an-object –

+1

私の[回答] (http://stackoverflow.com/a/9712584/1207152)@TheKrakenに記載されている[質問](http://stackoverflow.com/q/2051811/1207152)。 – sch

答えて

5

CGAffineTransformMakeRotationは(それはそれが本当にやることができる唯一のことだ、仕方変換作品与えられた、と)bなどでの変換a値、罪(角度)でのcos(角度)で行列を返すことexplicitly definedです。

したがって、単純な逆三角法を使って現在の回転を解くことができます。 atan2は、自動的に四分円を適切に把握するため、おそらく使用するものです。

です。

- (float)currentAngleOfView:(UIView *)view 
{ 
    CGAffineTransform transform = view.transform; 
    return atan2f(transform.b, transform.a); 
} 

それは、それが各軸に対して同じだとして(適切な方法でabフィールドを分割する伴うだろう、その方法は、あなたがスケーリング適用しても機能し続けます逆正接をやるので)または翻訳。

もっと複雑な変換や任意の変換を適用したい場合は、もっと複雑になります。ノーマル行列を計算する方法を調べたいと思うでしょう。思い出の中から、あなたは賛成派が欲しいと思います。

関連する問題