首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransform3DRotate旋转360度

CATransform3DRotate旋转360度
EN

Stack Overflow用户
提问于 2012-07-20 08:54:20
回答 1查看 6.2K关注 0票数 6

我最近开始使用CATransform3D,它看起来很不错。我只有一个轮换的问题。我试图将我的视图向右旋转360度˚,但如果我只是将Pass360设置为CATransform3DRotate,它就不能工作(它根本不能移动)。

下面是我的代码:

代码语言:javascript
复制
      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;

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-20 10:58:49

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

代码语言:javascript
复制
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密钥路径具有相同的效果。)可以在不同的轴上同时应用多个旋转。

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

代码语言:javascript
复制
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];
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11571420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档