2011-06-21 13 views
1

を翻訳:ビューと私はUIImageViewは、私が翻訳を行うことにより、画面の周りにそれをドラッグすることができ、カスタム(xDifとyDifは指が移動量である)持って、それを回転させる問題

CGAffineTransform translate = CGAffineTransformMakeTranslation(xDif, yDif); 
[self setTransform: CGAffineTransformConcat([self transform], translate)]; 

はのは、私が移動しましょうx方向とy方向の両方で50ピクセルのImageView。ない両方向で移動した位置+は50pxから - ImageViewのは、突然、翻訳前(ImageViewのが元々あった場所に移動している何が起こる

CGAffineTransform transform = CGAffineTransformMakeRotation([recognizer rotation]); 
myImageView.transform = transform; 

:私はその後で(ジェスチャー認識を介した)ImageViewのを回転させるようにしてみてください)。

(私はビューをどのように翻訳しても、ImageViewサブクラスのself.centerは同じままです - 元々IBに置かれていた場所)

もう1つの問題は、ImageViewを30度回転させてもう少し回転させようとすると、再び元の位置(角度= 0)から始まりそこから移動します角度ではなく、30度から開始します。

答えて

2

以前の変換を上書きしています。現在の変換に追加するには、あなたがこれを行う必要があります - あなたが元に追加するように

myImageView.transform = CGAffineTransformRotate(myImageView.transform, recognizer.rotation); 

をシリアル順序でtransformプロパティを変更しているので、あなたの代わりにCGAffineTransformRotateCGAffineTransformTranslateCGAffineTransformScaleを使用する必要があります変換し、新しいものを作成しないでください。

+0

'center'部分は変更されません。もう一つ注意すべきことは' transform'プロパティを変更すると 'frame'が信頼できなくなることです。 –

+0

なぜセンターが変わっても、翻訳後の最初の位置にはっきりと見えていないとき... – Ladislav

+0

ああ、彼らは何をするの?新しい位置を取得するための変換行列... – Ladislav

関連する問題

 関連する問題