基本上,我围绕一个点旋转图层:
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);
我还创建了一个图层,将其添加到更大的图层,然后对其应用变换:
[self.layer addSublayer:myLayer];
myLayer.transform = transform;
如何制作动画?
注意-将它放在UIView
动画 block 中是行不通的。
最佳答案
编辑正如@DuncanC 所指出的,我的描述与实际代码不符。
您可以使用添加到图层的 CABasicAnimation
,如下所示。
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"];
这个动画执行层的transform
属性从层的transform
属性的原始值到newTransform
的连续变化> 转型。更改需要 10 秒。
关于ios - 如何使用多个变换为 CATransform3D 制作动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12324270/