-1

開始するための基本的なコードは次のとおりです。

[UIView transitionWithView:self.view duration:2.0
                   options:UIViewAnimationOptionBeginFromCurrentState
                animations:^ {         

                    CALayer *layer1 = leftband.layer;
                    layer1.anchorPoint = CGPointMake(0, 0.5);
                    CATransform3D rotationAndPerspectiveTransform1 = CATransform3DIdentity;
                    rotationAndPerspectiveTransform1.m34 = 1.0 / -500;
                    rotationAndPerspectiveTransform1 = CATransform3DRotate(rotationAndPerspectiveTransform1, DegreesToRadians(-180.0f), 0.0f, 1.0f, 0.0f);
                    layer1.transform = rotationAndPerspectiveTransform1;

                    CALayer *layer2 = rightband.layer;
                    layer2.anchorPoint = CGPointMake(0, 0.5);
                    CATransform3D rotationAndPerspectiveTransform2 = CATransform3DIdentity;
                    rotationAndPerspectiveTransform2.m34 = 1.0 / -500;
                    rotationAndPerspectiveTransform2 = CATransform3DRotate(rotationAndPerspectiveTransform2, DegreesToRadians(180.0f), 0.0f, 1.0f, 0.0f);
                    layer2.transform = rotationAndPerspectiveTransform2;
                }
                completion:nil {

                }];

左バンドと右バンドは2つのUIImageViewです。私が望む効果は、左バンドがY軸に沿って左方向に変換されてアニメーション化することです。そして、右バンドはそのY軸に沿って右に向かって同じことをします。

ただし、上記のコードでは、左右両方のイメージビューが同じ方向にアニメーション化されます(左方向にのみ発生します)。アンカーポイントの理解が間違っていると思います。回転変換で-180°と+180°の両方を使用すると、左向きのアニメーションになります。

私はここで何が間違っているのですか?

4

1 に答える 1

0

基本的に、アニメーションブロックを実行する前にアンカーポイントを設定すると、問題が解決します。左->(0.0f、0.5f)および右->(1.0f、0.5f)のアンカーポイント。

于 2012-05-31T10:16:34.297 に答える