0

プロパティを使用CGAffineTransformMakeRotationしてサブビューを回転させるために使用していtransformます。後で、サブビューがどの程度回転したかを調べる必要があります。これを追跡するために単純に int を使用できることはわかっていますが、サブビューの現在の回転を取得する簡単な方法はありますか?

4

1 に答える 1

5

CGAffineTransformMakeRotationは、変換の値にcos(angle) 、 に sin(angle) などを含む行列を返すように明示的に定義されています(そして、変換が機能する方法を考えると、それが実際に実行できる唯一のことです)。ab

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

だから、例えば

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

aこれにより、 andフィールドを適切な方法で分割する逆正接が実行されるため、bスケーリング (各軸に同じである限り) または変換を適用しても、その方法は引き続き機能します。

より複雑な、または任意の変換を適用したい場合、事態はさらに複雑になります。正規行列の計算方法を確認する必要があります。記憶から、私はあなたが裁定書を欲しがっていると思います.

于 2012-04-20T23:21:46.773 に答える