2

UIImageViewにサブビューとしてを追加しました。UIView次に、このサブビューを次のコードで移動しUITouchesBeganます。

CGPoint newTouch = [[touches anyObject] locationInView:self]; 
     CGPoint lastTouch = [[touches anyObject] previousLocationInView:self];

    float xDif = newTouch.x - lastTouch.x; 
    float yDif = newTouch.y - lastTouch.y;
    translate = CGAffineTransformMakeTranslation(xDif, yDif);
    [self setTransform: CGAffineTransformConcat([self transform], translate)];

次に、このサブビューを次のコードでローテーションします。

self.transform=CGAffineTransformRotate(self.transform, RADIANS(180));

この段階では、すべてが順調です。しかし、もう一度サブビューを移動しようとすると、反対方向に移動します。つまり、上に移動したい場合は、下に移動します。

何か案は?提案?

4

1 に答える 1

2

翻訳変換を使用してサブビューを移動するのはなぜですか? centerプロパティを更新するだけです。平行移動変換を使用する際の問題は、回転すると、実際に現在の回転に対して相対的な方向に平行移動することです (発見したように、これは予期したものではない可能性があります)。平行移動変換の使用を主張したい場合 (これもなぜですか?)、回転を 0 (ニュートラル) に戻し、位置の移動を行ってから、目的の回転に戻す必要があります。

変換の順序は重要です。

于 2012-06-18T05:17:00.997 に答える