プロパティを使用CGAffineTransformMakeRotation
してサブビューを回転させるために使用していtransform
ます。後で、サブビューがどの程度回転したかを調べる必要があります。これを追跡するために単純に int を使用できることはわかっていますが、サブビューの現在の回転を取得する簡単な方法はありますか?
質問する
896 次
1 に答える
5
CGAffineTransformMakeRotation
は、変換の値にcos(angle) 、 に sin(angle) などを含む行列を返すように明示的に定義されています(そして、変換が機能する方法を考えると、それが実際に実行できる唯一のことです)。a
b
したがって、単純な逆三角法を実行することで、現在の回転を計算できます。atan2
象限を適切に自動的に把握するため、おそらく使用するものです。
だから、例えば
- (float)currentAngleOfView:(UIView *)view
{
CGAffineTransform transform = view.transform;
return atan2f(transform.b, transform.a);
}
a
これにより、 andフィールドを適切な方法で分割する逆正接が実行されるため、b
スケーリング (各軸に同じである限り) または変換を適用しても、その方法は引き続き機能します。
より複雑な、または任意の変換を適用したい場合、事態はさらに複雑になります。正規行列の計算方法を確認する必要があります。記憶から、私はあなたが裁定書を欲しがっていると思います.
于 2012-04-20T23:21:46.773 に答える