1

回転後に「パン」を使用すると、ビューが反対方向に移動するのはなぜですか?

これらの2つのジェスチャーは異なる座標系を使用しているようですか?回転は回転したものを使用し、パンは通常のものを使用しますか?

また、ビューを0'または360'の近くで回転させると、パンは正常になり、ビューを180'までさらに回転させると、「パン」によってビューがさらに反対方向に移動します。

ありがとう。

ここに画像の説明を入力してください

4

1 に答える 1

3

ポイントは、handRotateメソッドで回転変換をビューに割り当てていることです。これは、ビューがそのスーパービュー内に表示される方法の永続的な (変換を再度変更するまで) 変更を伴い、回転変換は、ビューの幾何学的プロパティに対して行った他の変更に常に「追加」されます。

レイヤー ジオメトリと変換で説明されているように、表示されている動作を説明するのは、ビューの位置とそのアンカー ポイントの間の相互作用です。つまり、パン時に変更するプロパティは、ビューに定義したすべての変換を適用した結果です。一方、パンするときにやろうとしていることは、変換が適用される前にビューの位置を変更する必要があります。center

これに対処する方法は、layers( CALayer) を使用してコードを再構成し、view の代わりに layerpositionプロパティを変更することcenterです。のように:

recognizer.view.layer.position = ...

これで直るといいなと思います。

(コンパイルするには QuartzCore をインポートする必要があります)。

お役に立てれば。

于 2012-07-29T07:24:35.333 に答える