#define kDegreesToRadian(x) (M_PI * (x) / 180.0) 
  
#define kRadianToDegrees(radian) (radian*180.0)/(M_PI) 
  
- (void)viewDidLoad 
{ 
    [superviewDidLoad]; 
    self.title = @"测试动画"; 
    self.view.backgroundColor = [UIColorlightGrayColor]; 
     
     
    myTest1 = [[UILabelalloc]initWithFrame:CGRectMake(10, 100, 60, 40)]; 
    myTest1.backgroundColor = [UIColorblueColor]; 
    myTest1.textAlignment = NSTextAlignmentCenter; 
    myTest1.text = @"张明炜"; 
    myTest1.textColor = [UIColorwhiteColor]; 
    [self.viewaddSubview:myTest1]; 
     
      //闪烁效果。 
//    [myTest1.layer addAnimation:[self opacityForever_Animation:0.5] forKey:nil]; 
      ///移动的动画。 
//    [myTest1.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]] forKey:nil]; 
    //缩放效果。 
//    [myTest1.layer addAnimation:[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT] forKey:nil]; 
     //组合动画。 
//    NSArray *myArray = [NSArray arrayWithObjects:[self opacityForever_Animation:0.5],[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]],[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT], nil]; 
//    [myTest1.layer addAnimation:[self groupAnimation:myArray durTimes:3.0f Rep:MAXFLOAT] forKey:nil]; 
    //路径动画。 
//    CGMutablePathRef myPah = CGPathCreateMutable(); 
//    CGPathMoveToPoint(myPah, nil,30, 77); 
//    CGPathAddCurveToPoint(myPah, nil, 50, 50, 60, 200, 200, 200);//这里的是控制点。 
//    [myTest1.layer addAnimation:[self keyframeAnimation:myPah durTimes:5 Rep:MAXFLOAT] forKey:nil]; 
    //旋转动画。 
    [myTest1.layeraddAnimation:[selfrotation:2degree:kRadianToDegrees(90) direction:1repeatCount:MAXFLOAT] forKey:nil]; 
     
     
} 
  
#pragma mark === 永久闪烁的动画 ====== 
-(CABasicACnimation *)opacityForever_Animation:(float)time 
{ 
    CABasicAnimation *animation = [CABasicAnimationanimationWithKeyPath:@"opacity"];//必须写opacity才行。 
    animation.fromValue = [NSNumbernumberWithFloat:1.0f]; 
    animation.toValue = [NSNumbernumberWithFloat:0.0f];//这是透明度。 
    animation.autoreverses = YES; 
    animation.duration = time; 
    animation.repeatCount = MAXFLOAT; 
    animation.removedOnCompletion = NO; 
    animation.fillMode = kCAFillModeForwards; 
     animation.timingFunction=[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseIn];///没有的话是均匀的动画。 
    return animation; 
} 
  
#pragma mark =====横向、纵向移动=========== 
-(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x 
{ 
    CABasicAnimation *animation = [CABasicAnimationanimationWithKeyPath:@"transform.translation.x"];///.y的话就向下移动。 
    animation.toValue = x; 
    animation.duration = time; 
    animation.removedOnCompletion = NO;//yes的话,又返回原位置了。 
    animation.repeatCount = MAXFLOAT; 
    animation.fillMode = kCAFillModeForwards; 
    return animation; 
} 
  
#pragma mark =====缩放-============= 
-(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repertTimes 
{ 
    CABasicAnimation *animation = [CABasicAnimationanimationWithKeyPath:@"transform.scale"]; 
    animation.fromValue = Multiple; 
    animation.toValue = orginMultiple; 
    animation.autoreverses = YES; 
    animation.repeatCount = repertTimes; 
    animation.duration = time;//不设置时候的话,有一个默认的缩放时间. 
    animation.removedOnCompletion = NO; 
    animation.fillMode = kCAFillModeForwards; 
    return  animation; 
} 
  
#pragma mark =====组合动画-============= 
-(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes 
{ 
    CAAnimationGroup *animation = [CAAnimationGroupanimation]; 
    animation.animations = animationAry; 
    animation.duration = time; 
    animation.removedOnCompletion = NO; 
    animation.repeatCount = repeatTimes; 
    animation.fillMode = kCAFillModeForwards; 
    return animation; 
} 
  
#pragma mark =====路径动画-============= 
-(CAKeyframeAnimation *)keyframeAnimation:(CGMutablePathRef)path durTimes:(float)time Rep:(float)repeatTimes 
{ 
    CAKeyframeAnimation *animation = [CAKeyframeAnimationanimationWithKeyPath:@"position"]; 
    animation.path = path; 
    animation.removedOnCompletion = NO; 
    animation.fillMode = kCAFillModeForwards; 
    animation.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseIn]; 
    animation.autoreverses = NO; 
    animation.duration = time; 
    animation.repeatCount = repeatTimes; 
    return animation; 
} 
  
#pragma mark ====旋转动画====== 
-(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount 
{ 
    CATransform3D rotationTransform = CATransform3DMakeRotation(degree, 0, 0, direction); 
    CABasicAnimation *animation = [CABasicAnimationanimationWithKeyPath:@"transform"]; 
    animation.toValue = [NSValue valueWithCATransform3D:rotationTransform]; 
    animation.duration  =  dur; 
    animation.autoreverses = NO; 
    animation.cumulative = NO; 
    animation.fillMode = kCAFillModeForwards; 
    animation.repeatCount = repeatCount; 
    animation.delegate = self; 
  
    return animation; 
  
} 
AnimationTest.zip (57.3 KB) |   
        
 
    
    
    
     
 
 |