2

我写这个是为了在它的 X 轴上CAKEyFrameAnimaton旋转 a 。CALayer但它不是旋转的。我在这里做错了什么?

CAKeyframeAnimation *topFoldAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.x"];
topFoldAnimation.duration             = 15;
topFoldAnimation.repeatCount          = 1;
topFoldAnimation.removedOnCompletion  = NO;
topFoldAnimation.autoreverses         = NO;
topFoldAnimation.fillMode             = kCAFillModeForwards;

CATransform3D tTrans                  = CATransform3DIdentity;
tTrans.m34                            = -1/900;

topFoldAnimation.values               = [NSArray arrayWithObjects:
                                        [NSValue valueWithCATransform3D:CATransform3DRotate(tTrans,DEGREES_TO_RADIANS(0),1,0,0)],
                                        [NSValue valueWithCATransform3D:CATransform3DRotate(tTrans,DEGREES_TO_RADIANS(-30),1,0,0)],
                                        [NSValue valueWithCATransform3D:CATransform3DRotate(tTrans,DEGREES_TO_RADIANS(-60),1,0,0)],
                                        [NSValue valueWithCATransform3D:CATransform3DRotate(tTrans,DEGREES_TO_RADIANS(-90),1,0,0)],
                                           nil];
topFoldAnimation.keyTimes             = [NSArray arrayWithObjects:
                                          [NSNumber numberWithFloat:0.00], 
                                          [NSNumber numberWithFloat:0.25],
                                          [NSNumber numberWithFloat:0.50],
                                          [NSNumber numberWithFloat:1.00],
                                           nil];
topFoldAnimation.timingFunctions      = [NSArray arrayWithObjects:
                                         [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear], 
                                         [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
                                         [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
                                         [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear],
                                           nil];
[[backgroundAnimationLayer.sublayers objectAtIndex:1] addAnimation:topFoldAnimation forKey:@"transform.rotation.x"];

任何帮助表示赞赏。谢谢...

4

1 回答 1

1

你的动画keyPath是错误的,它应该是 justtransform而不是transform.rotation.x

此外,您最终会得到0in,tTrans.m34因为您使用的是整数除法。应该是-1.0/900

于 2011-08-29T06:17:56.940 回答