iOS 简单的动画自定义方法(旋转、移动、闪烁等)
2015-05-02 00:03
549 查看
#define kDegreesToRadian(x) (M_PI * (x) / 180.0)
#define kRadianToDegrees(radian) (radian*180.0)/(M_PI)
- (void)viewDidLoad
{
[superviewDidLoad];
self.title = @"测试动画";
self.view.backgroundColor = [UIColor lightGrayColor];
myTest1 = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 60, 40)];
myTest1.backgroundColor = [UIColor blueColor];
myTest1.textAlignment = NSTextAlignmentCenter;
myTest1.text = @"张明炜";
myTest1.textColor = [UIColor whiteColor];
[self.view addSubview: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:[self rotation:2 degree:kRadianToDegrees(90) direction:1 repeatCount: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;
}
转自:http://zhangmingwei.iteye.com/blog/2101782
#define kRadianToDegrees(radian) (radian*180.0)/(M_PI)
- (void)viewDidLoad
{
[superviewDidLoad];
self.title = @"测试动画";
self.view.backgroundColor = [UIColor lightGrayColor];
myTest1 = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 60, 40)];
myTest1.backgroundColor = [UIColor blueColor];
myTest1.textAlignment = NSTextAlignmentCenter;
myTest1.text = @"张明炜";
myTest1.textColor = [UIColor whiteColor];
[self.view addSubview: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:[self rotation:2 degree:kRadianToDegrees(90) direction:1 repeatCount: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;
}
转自:http://zhangmingwei.iteye.com/blog/2101782
相关文章推荐
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- IOS 简单的动画自定义方法(旋转、移动、闪烁等)
- iOS简单动画效果:闪烁、移动、旋转、路径、组合、
- iOS简单动画效果:闪烁、移动、旋转、路径、组合
- IOS 基本动画(旋转、移动、闪烁、缩放等)
- IOS中UIImageView方法实现简单动画
- iOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果
- IOS中动画的实现:以及视图的移动、缩放和旋转
- IOS第18天(10,核心动画-转盘,自定义buton,旋转动画)
- iOS数组内存放自定义model的简单排序方法
- 【iOS学习笔记 15-11-06】简单自定义navigationcontroller push和pop动画效果
- 动画:UIKitAnimation 简单动画学习 iOS (一) 渐变 、 移动 、翻页、来回翻转
- IOS中动画的实现:以及视图的移动、缩放和旋转
- IOS中动画的实现:以及视图的移动、缩放和旋转
- iOS中动画的实现:以及视图的移动、缩放和旋转
- IOS系列——简单动画-位移和渐隐和旋转
- ios移动旋转缩放动画
- IOS动画的使用方法总结-下拉框的简单实现