4

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

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动画块中是行不通的。

4

1 回答 1

9

编辑:正如@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图层属性从图层属性的原始值transformnewTransform变换的连续变化。更改需要 10 秒。

于 2012-09-07T20:53:40.210 回答