2

CATransform3Dが正しく機能していません。以下のコードを使用しています。私の問題は、変換を変更した場合、正常に機能することです。指を離してさらに変換すると、画像は初期画像に移動します。最後の変換を設定するにはどうすればよいですか?変換にはPanGestureを使用しています。アイデアをお願いします。前もって感謝します。

if ([recognizer respondsToSelector:@selector(translationInView:)]) {
    CGPoint translation = [(UIPanGestureRecognizer *)recognizer translationInView:recognizer.view.superview];
    CALayer *layer = self.layer;
    CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
    rotationAndPerspectiveTransform.m34 = 1.0 / -500;
    rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, translation.x * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
    layer.transform = rotationAndPerspectiveTransform;
    rotationAndPerspectiveTransform.m34 = 1.0 / -500;
    rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, -translation.y * M_PI / 180.0f, 1.0f, 0.0f, 0.0f);
    layer.transform = rotationAndPerspectiveTransform;
}
4

1 に答える 1

1

CATransform3DIdentityビューがタッチを受けるたびに変換をリセットすることを意味します。CATransform3D rotationAndPerspectiveTransform = layer.transform;代わりに使用してください。

于 2012-09-17T13:30:34.243 に答える