gpt4 book ai didi

iphone - CATransform3DRotate 旋转 360 度

转载 作者:太空狗 更新时间:2023-10-30 03:39:17 39 4
gpt4 key购买 nike

我最近开始使用 CATransform3D,它看起来非常好。不过,我只有 1 个轮换问题。我试图将 View 向右旋转 360°,但如果我只是将 360 度传递给 CATransform3DRotate,它就不起作用(它根本就不动。)

这是我的代码:

      CALayer *layer = dock.layer;
CATransform3D r = CATransform3DIdentity;
r.m34 = 1.0 / -500;
r = CATransform3DRotate(r, DegreesToRadians(360.0f), 100.0f, 1.0f, 100.0f);
layer.transform = r;

有人知道如何解决这个问题吗?提前致谢! :)

最佳答案

您可以通过为层的 transform.rotation 关键路径设置动画来围绕其 Z 轴设置一个(或多个)完整旋转,如下所示:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animation.duration = .25;
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
[layer addAnimation:animation forKey:animation.keyPath];

您可以使用关键路径 transform.rotation.xtransform.rotation.y 围绕 X 或 Y 轴设置动画。 (transform.rotation.z 键路径与 transform.rotation 键路径具有相同的效果。)您可以同时在不同的轴上应用多个旋转。

另一种方法是使用关键帧动画,如果您想围绕离轴矢量旋转,这种方法可能效果更好,如下所示:

CALayer *layer = [sender layer];
CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0 / -50;
layer.transform = transform;

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
animation.values = [NSArray arrayWithObjects:
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 0 * M_PI / 2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 1 * M_PI / 2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 2 * M_PI / 2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 3 * M_PI / 2, 100, 1, 100)],
[NSValue valueWithCATransform3D:CATransform3DRotate(transform, 4 * M_PI / 2, 100, 1, 100)],
nil];
animation.duration = 2;
[layer addAnimation:animation forKey:animation.keyPath];

关于iphone - CATransform3DRotate 旋转 360 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571420/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com