回転後に「パン」を使用すると、ビューが反対方向に移動するのはなぜですか?
これらの2つのジェスチャーは異なる座標系を使用しているようですか?回転は回転したものを使用し、パンは通常のものを使用しますか?
また、ビューを0'または360'の近くで回転させると、パンは正常になり、ビューを180'までさらに回転させると、「パン」によってビューがさらに反対方向に移動します。
ありがとう。
回転後に「パン」を使用すると、ビューが反対方向に移動するのはなぜですか?
これらの2つのジェスチャーは異なる座標系を使用しているようですか?回転は回転したものを使用し、パンは通常のものを使用しますか?
また、ビューを0'または360'の近くで回転させると、パンは正常になり、ビューを180'までさらに回転させると、「パン」によってビューがさらに反対方向に移動します。
ありがとう。
ポイントは、handRotate
メソッドで回転変換をビューに割り当てていることです。これは、ビューがそのスーパービュー内に表示される方法の永続的な (変換を再度変更するまで) 変更を伴い、回転変換は、ビューの幾何学的プロパティに対して行った他の変更に常に「追加」されます。
レイヤー ジオメトリと変換で説明されているように、表示されている動作を説明するのは、ビューの位置とそのアンカー ポイントの間の相互作用です。つまり、パン時に変更するプロパティは、ビューに定義したすべての変換を適用した結果です。一方、パンするときにやろうとしていることは、変換が適用される前にビューの位置を変更する必要があります。center
これに対処する方法は、layers( CALayer
) を使用してコードを再構成し、view の代わりに layerposition
プロパティを変更することcenter
です。のように:
recognizer.view.layer.position = ...
これで直るといいなと思います。
(コンパイルするには QuartzCore をインポートする必要があります)。
お役に立てれば。