Core Animation之CATransform3D学习篇

  

2013-01-17 15:33:03|  分类: MAC OS |  标签:catransform3d  |举报|字号 订阅

3D,顾名思义就是可以在z轴上动作,这里列举三个用例

//用例1 scale 
 CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@" transform"];
    CATransform3D transform =  CATransform3DMakeScale(0.5, 0.5, 1.0);   //x,y,z放大缩小倍数
    NSValue *value = [NSValue valueWithCATransform3D:transform];
    [theAnimation setToValue:value];
    
    transform = CATransform3DMakeScale(1.0, 1.0, 1.0);
    value = [NSValue valueWithCATransform3D:transform];
    [theAnimation setFromValue:value];

    [theAnimation setAutoreverses:YES];   //原路返回的动画一遍
    [theAnimation setDuration:1.0];
    [theAnimation setRepeatCount:2];
    
   [layer addAnimation:theAnimation forKey:nil];


//用例2 rotate 
   ......
 CATransform3D transform =  CATransform3DMakeRotation(1.57, 1, 1, 0);  //1.57表示所转角度的弧度 = 90Pi/180 = 90*3.14/180
    NSValue *value = [NSValue valueWithCATransform3D:transform];
    [theAnimation setToValue:value];
    
    transform = CATransform3DMakeRotation(0, 1, 1, 0);
    value = [NSValue valueWithCATransform3D:transform];
    [theAnimation setFromValue:value];
  ......

//用例3 scale+rotate+position
 CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@" transform"];
    CATransform3D rotateTransform = CATransform3DMakeRotation(1.57, 0, 0, -1);
    CATransform3D scaleTransform = CATransform3DMakeScale(5, 5, 5);
    CATransform3D positionTransform =  CATransform3DMakeTranslation(0, 0, 0);  //位置移动
    CATransform3D combinedTransform = CATransform3DConcat(rotateTransform, scaleTransform);  //Concat就是combine的意思
    combinedTransform = CATransform3DConcat(combinedTransform, positionTransform);  //再combine一次把三个动作连起来
   
    [anim setFromValue:[NSValue valueWithCATransform3D: CATransform3DIdentity]];  //放在3D坐标系中最正的位置
    [anim setToValue:[NSValue valueWithCATransform3D:combinedTransform]];
    [anim setDuration:5.0f];
    
    [ layer addAnimation:anim forKey:nil];
  
    [layer setTransform:combinedTransform];   //如果没有这句,layer执行完动画又会返回最初的state

你可能感兴趣的:(Core Animation之CATransform3D学习篇)