应用锚点后CATransform3DRotate效果消失

时间:2013-06-04 01:15:51

标签: ios catransform3d catransform3drotate

正确观察编辑。

我使用以下两个片段来旋转UIImageView。在stage1之后,我得到了所需的3D效果:视图旋转(3D效果)并伸展(更大尺寸)。在第二阶段,我试图用右边的铰链摆动右视图。

如果我应用了更改定位点的线条,则视图正确摆动(右侧铰接)有一个主要问题:视图的大小恢复到原始大小(较小),而(旋转)3D效果仍然完好无损然后发生摆动。

有什么建议吗?

rightView.layer.anchorPoint = CGPointMake(1.0, 0.5); 


-(void)stage1
{
    [UIView animateWithDuration:1.5  animations:^{
        rightView.transform = CGAffineTransformMakeTranslation(0,0);   //rightView i UIImageView
        CATransform3D _3Dt = CATransform3DIdentity;
        _3Dt =CATransform3DMakeRotation(3.141f/42.0f,0.0f,-1.0f,0.0f);  
        _3Dt.m34 = -0.001f;
        _3Dt.m14 = -0.0015f;
        rightView.layer.transform = _3Dt;
    } completion:^(BOOL finished){
        if (finished) {
            NSLog(@"finished..");
        }
    }];
}

-(void)Stage2
{
    rightView.layer.anchorPoint = CGPointMake(1.0, 0.5);   //issue?
    rightView.center = CGPointMake(1012, 384);
    [UIView animateWithDuration:1.75 animations:^{
        CATransform3D rightTransform = rightView.layer.transform;
        rightTransform.m34 = 1.0f/500; 
        rightTransform = CATransform3DRotate(rightTransform, M_PI_2, 0, 1, 0);
        rightView.layer.transform = rightTransform;
    } completion:^(BOOL finished) {
    }];
}

1 个答案:

答案 0 :(得分:1)

您需要在持续时间的动画中添加“选项”并添加options:UIViewAnimationOptionBeginFromCurrentState

否则它会从头开始。

所以你的第2阶段看起来像这样:

-(void)Stage2
{
    rightView.layer.anchorPoint = CGPointMake(1.0, 0.5);   //issue?
    rightView.center = CGPointMake(1012, 384);
    [UIView animateWithDuration:1.75
                          delay:0.00 
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
        CATransform3D rightTransform = rightView.layer.transform;
        rightTransform.m34 = 1.0f/500; 
        rightTransform = CATransform3DRotate(rightTransform, M_PI_2, 0, 1, 0);
        rightView.layer.transform = rightTransform;
    } completion:^(BOOL finished) {
    }];
}