博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动画 CABasicAnimation animationWithKeyPath 一些规定的值
阅读量:4636 次
发布时间:2019-06-09

本文共 11100 字,大约阅读时间需要 37 分钟。

CABasicAnimation animationWithKeyPath Types

When using the ‘CABasicAnimation’ from the QuartzCore Framework in Objective-C, you have to specify an animationWithKeyPath.  This is a long string and is not easily listed in the CABasicAnimation, CAPropertyAnimation, or the CAAnimation class.  I ended up finding a handy chart within the Core Animation Programming guide in Apple’s iPhone OS Reference Library.  Hope this helps save someone time, at least it will for me.

 

 

 

CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; theAnimation.delegate = self; theAnimation.duration = 1; theAnimation.repeatCount = 0; theAnimation.removedOnCompletion = FALSE; theAnimation.fillMode = kCAFillModeForwards; theAnimation.autoreverses = NO; theAnimation.fromValue = [NSNumber numberWithFloat:0]; theAnimation.toValue = [NSNumber numberWithFloat:-60]; [self.view.layer addAnimation:theAnimation forKey:@"animateLayer"];
我们可以通过animationWithKeyPath键值对的方式来改变动画 animationWithKeyPath的值: transform.scale = 比例轉換 transform.scale.x = 闊的比例轉換 transform.scale.y = 高的比例轉換 transform.rotation.z = 平面圖的旋轉 opacity = 透明度 margin zPosition backgroundColor cornerRadius borderWidth bounds contents contentsRect cornerRadius frame hidden mask masksToBounds opacity position shadowColor shadowOffset shadowOpacity shadowRadius [self. ui_View.layer removeAllAnimations];     CABasicAnimation *pulse = [CABasicAnimation animationWithKeyPath:@"transform.scale"];     pulse.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];     pulse.duration = 0.5 + (rand() % 10) * 0.05;     pulse.repeatCount = 1;     pulse.autoreverses = YES;     pulse.fromValue = [NSNumber numberWithFloat:.8];     pulse.toValue = [NSNumber numberWithFloat:1.2];     [self.ui_View.layer addAnimation:pulse forKey:nil]; // bounds CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"bounds"];     anim.duration = 1.f;     anim.fromValue = [NSValue valueWithCGRect:CGRectMake(0,0,10,10)];     anim.toValue = [NSValue valueWithCGRect:CGRectMake(10,10,200,200)];     anim.byValue  = [NSValue valueWithCGRect:self. ui_View.bounds]; //    anim.toValue = (id)[UIColor redColor].CGColor; //    anim.fromValue =  (id)[UIColor blackColor].CGColor;     anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     anim.repeatCount = 1;     anim.autoreverses = YES;     [ui_View.layer addAnimation:anim forKey:nil]; //cornerRadius     CABasicAnimation *anim2 = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];     anim2.duration = 1.f;     anim2.fromValue = [NSNumber numberWithFloat:0.f];     anim2.toValue = [NSNumber numberWithFloat:20.f];     anim2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     anim2.repeatCount = CGFLOAT_MAX;     anim2.autoreverses = YES;     [ui_View.layer addAnimation:anim2 forKey:@"cornerRadius"]; //contents CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"contents"];     anim.duration = 1.f;     anim.fromValue = (id)[UIImage imageNamed:@"1.jpg"].CGImage;     anim.toValue = (id)[UIImage imageNamed:@"2.png"].CGImage; //    anim.byValue  = (id)[UIImage imageNamed:@"3.png"].CGImage; //    anim.toValue = (id)[UIColor redColor].CGColor; //    anim.fromValue =  (id)[UIColor blackColor].CGColor;     anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     anim.repeatCount = CGFLOAT_MAX;     anim.autoreverses = YES;     [ui_View.layer addAnimation:anim forKey:nil]; [ui_View.layer setShadowOffset:CGSizeMake(2,2)];     [ui_View.layer setShadowOpacity:1];     [ui_View.layer setShadowColor:[UIColor grayColor].CGColor]; //     CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"shadowColor"];     anim.duration = 1.f;     anim.toValue = (id)[UIColor redColor].CGColor;     anim.fromValue =  (id)[UIColor blackColor].CGColor;     anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     anim.repeatCount = CGFLOAT_MAX;     anim.autoreverses = YES;     [ui_View.layer addAnimation:anim forKey:nil];     CABasicAnimation *_anim = [CABasicAnimation animationWithKeyPath:@"shadowOffset"];     _anim.duration = 1.f;     _anim.fromValue = [NSValue valueWithCGSize:CGSizeMake(0,0)];     _anim.toValue = [NSValue valueWithCGSize:CGSizeMake(3,3)];     _anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     _anim.repeatCount = CGFLOAT_MAX;     _anim.autoreverses = YES;     [ui_View.layer addAnimation:_anim forKey:nil];     CABasicAnimation *_anim1 = [CABasicAnimation animationWithKeyPath:@"shadowOpacity"];     _anim1.duration = 1.f;     _anim1.fromValue = [NSNumber numberWithFloat:0.5];     _anim1.toValue = [NSNumber numberWithFloat:1];     _anim1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     _anim1.repeatCount = CGFLOAT_MAX;     _anim1.autoreverses = YES;     [ui_View.layer addAnimation:_anim1 forKey:nil];     CABasicAnimation *_anim2 = [CABasicAnimation animationWithKeyPath:@"shadowRadius"];     _anim2.duration = 1.f;     _anim2.fromValue = [NSNumber numberWithFloat:10];     _anim2.toValue = [NSNumber numberWithFloat:5];     _anim2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];     _anim2.repeatCount = CGFLOAT_MAX;     _anim2.autoreverses = YES;     [ui_View.layer addAnimation:_anim2 forKey:nil];

 

 

 

 

 

几个可以用来实现热门APP应用PATH中menu效果的几个方法

+(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画

{

    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];

    animation.fromValue=[NSNumber numberWithFloat:1.0];

    animation.toValue=[NSNumber numberWithFloat:0.0];

    animation.autoreverses=YES;

    animation.duration=time;

    animation.repeatCount=FLT_MAX;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    return animation;

}

 

+(CABasicAnimation *)opacityTimes_Animation:(float)repeatTimes durTimes:(float)time; //有闪烁次数的动画

{

    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];

    animation.fromValue=[NSNumber numberWithFloat:1.0];

    animation.toValue=[NSNumber numberWithFloat:0.4];

    animation.repeatCount=repeatTimes;

    animation.duration=time;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

    animation.autoreverses=YES;

    return  animation;

}

 

+(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x //横向移动

{

    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];

    animation.toValue=x;

    animation.duration=time;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    return animation;

}

 

+(CABasicAnimation *)moveY:(float)time Y:(NSNumber *)y //纵向移动

{

    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"];

    animation.toValue=y;

    animation.duration=time;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    return animation;

}

 

+(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repeatTimes //缩放

{

    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.scale"];

    animation.fromValue=orginMultiple;

    animation.toValue=Multiple;

    animation.duration=time;

    animation.autoreverses=YES;

    animation.repeatCount=repeatTimes;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    return animation;

}

 

+(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes //组合动画

{

    CAAnimationGroup *animation=[CAAnimationGroup animation];

    animation.animations=animationAry;

    animation.duration=time;

    animation.repeatCount=repeatTimes;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    return animation;

}

 

+(CAKeyframeAnimation *)keyframeAniamtion:(CGMutablePathRef)path durTimes:(float)time Rep:(float)repeatTimes //路径动画

{

    CAKeyframeAnimation *animation=[CAKeyframeAnimation animationWithKeyPath:@"position"];

    animation.path=path;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

    animation.autoreverses=NO;

    animation.duration=time;

    animation.repeatCount=repeatTimes;

    return animation;

}

 

+(CABasicAnimation *)movepoint:(CGPoint )point //点移动

{

    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation"];

    animation.toValue=[NSValue valueWithCGPoint:point];

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    return animation;

}

 

+(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount //旋转

{

    CATransform3D rotationTransform  = CATransform3DMakeRotation(degree, 0, 0,direction);

    CABasicAnimation* animation;

    animation = [CABasicAnimation animationWithKeyPath:@"transform"];

 

animation.toValue= [NSValue valueWithCATransform3D:rotationTransform];

    animation.duration= dur;

animation.autoreverses= NO;

    animation.cumulative= YES;

    animation.removedOnCompletion=NO;

    animation.fillMode=kCAFillModeForwards;

    animation.repeatCount= repeatCount; 

animation.delegate= self;

 

return animation;

}

 

 

 

 

 

实现view放大再缩小的效果

- (void)viewDidLoad {
[super viewDidLoad]; layer=[CALayer layer]; layer.frame=CGRectMake(50, 200, 50, 50); layer.backgroundColor=[UIColor orangeColor].CGColor; layer.cornerRadius=8.0f; CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; animation.duration=4.0f; animation.autoreverses=NO; animation.repeatCount=1; animation.toValue=[NSNumber numberWithInt:-10]; animation.fromValue=[NSNumber numberWithInt:200]; animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; CABasicAnimation *animationZoomIn=[CABasicAnimation animationWithKeyPath:@"transform.scale"]; animationZoomIn.duration=2.0f; animationZoomIn.autoreverses=NO; animationZoomIn.repeatCount=1; animationZoomIn.toValue=[NSNumber numberWithFloat:1.56]; animationZoomIn.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; CABasicAnimation *animationZoomOut=[CABasicAnimation animationWithKeyPath:@"transform.scale"]; animationZoomOut.beginTime=2.0f; animationZoomOut.duration=2.0f; animationZoomOut.autoreverses=NO; animationZoomOut.repeatCount=1; animationZoomOut.toValue=[NSNumber numberWithFloat:.01]; animationZoomOut.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; CAAnimationGroup *group=[CAAnimationGroup animation]; group.duration=4.0f; group.animations=[NSArray arrayWithObjects: animation, animationZoomIn, animationZoomOut,nil]; group.removedOnCompletion=NO; group.fillMode=kCAFillModeForwards; [layer addAnimation:group forKey:nil]; [self.view.layer addSublayer:layer]; //layer.hidden=YES; }

转载于:https://www.cnblogs.com/weiboyuan/p/5081873.html

你可能感兴趣的文章
Python初步
查看>>
【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用
查看>>
QGLViewer 编译安装步骤
查看>>
配置Mysql实现主从复制与读写分离
查看>>
易货Beta版本发布说明
查看>>
textbox 和textera 文本框多行后不能拉伸
查看>>
mingw + msys 上编译 ffmpeg
查看>>
使用Mule ESB与Groovy编排RESTful服务【转】很适合我们当前的架构
查看>>
适配器模式
查看>>
二叉树
查看>>
判断 iframe 是否加载完成的完美方法(转)
查看>>
一文告诉你 Event Loop 是什么?
查看>>
记录知识点或技术方案信息
查看>>
新手学html 第一节:html简介
查看>>
【C】strcpy()需谨慎使用;
查看>>
docker安装nginx容器小记
查看>>
SUSE11 搭建iscsi target 配置
查看>>
5.3linux下C语言socket网络编程简例
查看>>
【PKUSC2019】线弦图【计数】【树形DP】【分治FFT】
查看>>
collections系列
查看>>