IOS动画CABasicACnimationanimation

动画分享

」憨豆先森。  •  08-10 12:00  •  0 回复  •  46 查看

IOS 简单的动画自定义方法(旋转、移动、闪烁等) 

动画IOS动画CABasicACnimationanimation  

#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; 



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值