我有一个我正在尝试做的序列动画。它有两个步骤。
第 1 步:我选择图层并稍微改变视角,使图层的顶部看起来向后移动。sourceViewController.view.layer.transform CATransform3DMakePerspective(0, 0.003, CATransform3DIdentity);
第 2 步:我将比例更改为 80%,并将视角恢复正常。这使它像一个轻微的摆动缩小动画。
sourceViewController.view.layer.transform = CATransform3DScale(sourceViewController.view.layer.transform, 0.8, 0.8, 1);
sourceViewController.view.layer.transform CATransform3DMakePerspective(0, 0, sourceViewController.view.layer.transform);
我最大的问题是这个。我不能同时在图层上做 2 个动画。它会在第一次转换结束时自动开始,而不是同时进行。这可以通过 concat 解决,但由于我希望第 1 步顶部发生,因此该层将其保存状态,以便第 2 步可以发生,我不能将所有三个都连接起来。
如何创建在同一层上具有 1 个或多个变换的多步动画?就像我在下面的示例中所说的那样,它将跳过第 1 步并开始,就好像该步骤已经完成一样。我知道解释起来有点混乱。这是我的动画。
[UIView animateWithDuration:2.0 延迟:0.0 选项:UIViewAnimationCurveEaseIn 动画:^{ sourceViewController.view.layer.transform = CATransform3DMakePerspective(0, 0.003, sourceViewController.view.layer.transform); [UIView animateWithDuration:1.0 延迟:1.0 选项:UIViewAnimationCurveEaseOut 动画:^{ sourceViewController.view.layer.transform = CATransform3DConcat(CATransform3DScale(sourceViewController.view.layer.transform, 0.8, 0.8, 1),CATransform3DMakePerspective(0, 0, sourceViewController.view.layer.transform)); } 完成:无]; } 完成:^(布尔完成){ }];
我已经用谷歌搜索并尝试了一切。必须有一种方法可以在同一层上执行连续动画,从最后一个精灵离开的地方开始。我传入的是图层而不是 CATransform3DIdentity,因为我读到身份恢复到起始状态,而不是图层转换到的位置。