0

タイトルがあいまいかもしれませんが、これが私がやりたいことです。

私のアプリケーションには 2 つの車輪があります。ユーザーは外側のホイールを回転させて内側のホイールの値と一致させ、選択した値に従って特定の結果を表示できます。

これで、transform プロパティを設定することで、画像をうまく回転させることができます。しかし、一度変換すると、外側のホイールで何が選択されているかをどのように知ることができますか??

1 つの方法は、変換プロパティを取得して操作することです。

しかし、どのように?

4

2 に答える 2

1

画像自体を回転させるのではなく、画像ビューのレイヤーを回転させます。その後、画像を含む画像ビューのレイヤーの変換プロパティにいつでもアクセスできます。

わかりました、ここにいくつかのコードがあります。まず、uiimageview のレイヤーを取得する必要があります

CALayer* layer = [self.layer presentationLayer];

次に、このようにレイヤーのキーパスから必要なローテーションを読み取ることができます。

float rotationAngle = [[layer valueForKeyPath:@"transform.rotation.z"] floatValue];

これで問題が解決しない場合はお知らせください。回転角度を取得する別の方法もあります。しかし、それはもう少し複雑です;)

于 2012-10-22T16:11:39.143 に答える
0

必要に応じて、画像をどれだけ回転させたかをラジアンまたは度で追跡し、少しトリグして画像がどこを指しているかを把握できます。アフィン変換から回転を抽出するのは驚くほど難しい。

編集:開始するためのテストされていないスニペットを次に示します。

あなたのヘッダーで:

CGFloat _userRotation;

回転を適用するときrotation、ユーザーが回転した量のラジアン単位の CGFloat であると仮定します。

myView.transform = CGAffineTransformMakeRotation(rotation);
_userRotation = rotation;

あとは、ちょっとしたトリックを使って、どの画像を指しているのかを判断するだけです。計算は何をしようとしているのかによって異なるため、サンプル コードを提供することはできませんが、現在のローテーションは で利用できます_userRotation

それがあなたが求めていたものかどうかはわかりません。それは役に立ちますか?

于 2012-10-22T16:34:39.600 に答える