如何使用多个变换为CATransform3D制作动画?

tip*_*low 4 core-animation core-graphics uiviewanimation ios

基本上,我正在围绕一个点旋转一层:

CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -500;
transform = CATransform3DTranslate(transform, rotationPoint.x-center.x, rotationPoint.y-center.y, 0.0);
transform = CATransform3DRotate(transform, (rotationAngleFor) * M_PI / 180.0f, 0.0, 1.0, 0);
transform = CATransform3DTranslate(transform, center.x-rotationPoint.x, center.y-rotationPoint.y, 0.0);
Run Code Online (Sandbox Code Playgroud)

我还创建了一个图层,将其添加到更大的图层,然后将变换应用于它:

[self.layer addSublayer:myLayer];
myLayer.transform = transform;
Run Code Online (Sandbox Code Playgroud)

如何动画这个?

注意 -将其放在UIView动画块中不起作用.

Jan*_*sen 9

编辑:由于@DuncanC指出我的描述与实际代码不符.

您可以使用CABasicAnimation添加到图层的a,如下所示.

CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath: @"transform"];

    <here goes your definition of transform>

transformAnimation.toValue = [NSValue valueWithCATransform3D:newTransform];
transformAnimation.duration = 10;
[self.layer addAnimation:transformAnimation forKey:@"transform"];
Run Code Online (Sandbox Code Playgroud)

此动画执行的连续变化transform从原始值的层的属性transform的层对的属性newTransform转变.这个改变需要10秒钟.