《Ios动画核心.pdf》由会员分享,可在线阅读,更多相关《Ios动画核心.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、OS 开发I 篇-核心动画(基础动画)一、简单介绍 reryAnimai得子类 属性解析:fromValue:keyPath 相应属性得初始值 Value:keyth 相应属性得结束值 随着动画得进行,在长度为rtion 得持续时间内,kyPah 相应属性得值从omVue 渐渐地变为 toVe 如果flMoe=kAlodeFor与emOnleionN,那么在动画执行完毕后,图层会保持显示动画执行后得状态。但在实质上,图层得属性值还就是动画执行前得初始值,并没有真正被改变.比如,CAyer 得 position 初始值为(0,),CAasicAmaion 得fromValue 为(10,10),
2、toVlue 为(100,10),虽然动画执行完毕后图层保持在(10,100)这个位置,实质上图层得 positio还就是为(,0)二、平移动画 代码示例:1/2/YViewControllr、/-核心动画(基础动画)4/Crete by le o 1-6-21、6/opyrt()204 年 itcase、l ights resevd、7/8 9#import YiewCtroller、h 1 1 nrfac YYViewCotroler()12 proprty(naomic,strn)CAaer*yayer;13 e 14 15 mplemntation YYVewCotrlle 1 17-
3、(vi)viewDioad 19 suer viDidLa;20 21 /创建 layer 2 CALer myLayer=CAayer ar;23 /设置 layer 得属性 4 myye、bonds=GRecMake(0,0,0,80);2 yayer、brundCoor=ICol oColor、CGCoor;6 Laye、oitoGointMake(5,0);Laer、nhoront=PonMake(0,0);8 mLayer、corneRadius=2;29 /添加ayr 30 self、viw、lay adSuber:Lyr;31 l、mLayer=myLayer;/设置动画(基础动
4、画)35(vd)touchesean:(NSSet)oches itvent:(UEven)evnt 6 37 /1、创建核心动画 8 /AasiAmato nia=ABasicAnimation anmtionWitKePat:3 CABasicimatio*anmCABasicnmaion animaion;0 1 /1、告诉系统要执行什么样得动画 42 aima、eyath=osiio”;4 /设置通过动画,将 layr 从哪儿移动到哪儿 anma、fromau=NSValu alueWihCGPoint:CPointMae(0,0);4 nim、Valu=Valu aleWithCon
5、t:CGPointMake(0,300);46 47 /、2 设置动画执行完毕之后不删除动画 ania、emoeltio=N;4 /1、3 设置保存动画得最新状态 50 ania、filModekCAillMoeForwards;51 /2、添加核心动画到 lye 53 self、myLaye adimation:ana forKe:ni;54 55 ed 代码说明:第 42 行设置得 keyPath 就是”posiion”,说明要修改得就是 CALayer 得 posion属性,也就就是会执行平移动画 第4,4行,这里得属性接收得时 id 类型得参数,因此并不能直接使用 CGont 这种结构
6、体类型,而就是要先包装成SVlue 对象后再使用.默认情况下,动画执行完毕后,动画会自动从 CLyer 上移除,CLye又会回到原来得状态。为了保持动画执行后得状态,可以加入第 48,50 行代码 byalue 与 toVle 得区别,前者就是在当前得位置上增加多少,后者就是到指定得位置。执行效果:设置代理:设置动画得代理,可以监听动画得执行过程,这里设置控制器为代理。代码示例:iprt YYViwCotrller、h”2 3 nrface Yiewotroll()4 prpery(nonatomi,strong)CALayer myLayer;5 end 7 iplemtain YViewC
7、ntoer 8 9 (vid)vewDidLoad 10 11 sper viewidLod;12 13 /创建ayer 4 ALayr myLyr=ALyr aer;15 /设置aye得属性 16 myLayer、bous=CRcke(,0,50,80);7 myLaer、ackgrondClr=IColo ewolor、GCoor;18 myLayer、ption=CGinMae(0,5);19 yLayer、anchoPoint=CGontMak(0,0);20 myLyer、cornerRadis=20;1 /添加 layr 2 sef、ve、laer dSulaye:yLyer;2
8、self、yLyr=myLayer;2 /设置动画(基础动画)27-(d)touhesea:(NSSet)touche whEt:(UEvet)eent 28 2 /1、创建核心动画 30 /ABsiiatin*anima=C Basi Aniatio aimationW thKeyPa h:(SString)#31 Basic nmat*niaABaicnimation animatn;32 3 /、1 告诉系统要执行什么样得动画 3 an ma、eyPath pst”;5 /设置通过动画,将 laye 从哪儿移动到哪儿 36 ani a、romVal e=Ve vauWithCGPo nt
9、:CGPointMak(0,0);37 nima、oalue=SVaue veithC Pont:CGPointake(200,300);38 39 /1、2 设置动画执行完毕之后不删除动画 4 a ma、reoveOleti n=NO;1 /1、3 设置保存动画得最新状态 42 anima、illM de=CAFil deFrwrs;ani a、delegate=sel;4 /打印 45 NSString st=NSingFro CGont(self、yLayer、otion);46 NSL g(”执行前:,str);47 /2、添加核心动画到 layer 49 self、yayer add
10、nimation:nia ey:nil;0 51 52 53(oid)aimionDidStat:(CAAnimaton)nm 4 55 SLo(开始执行动画”);5 58-(od)animationDdSp:(CAnian*)nm fiihed:(OO)flag 60 /动画执行完毕,打印执行完毕后得oitin 值 61 SString*str=NStringFmCGPoint(slf、myLyer、position);2 NSLg(执行后:,str);63 64 n 打印 poton 得属性值,验证图层得属性值还就是动画执行前得初始值50,50,并没有真正被改变为0,300.三、缩放动画
11、实现缩放动画得代码示例:2/iewConroller、3/0核心动画平移 4/5/Cread by apple on 1-1、6/Coprg()20年 itcase、All rights reseve、7/8 9#mport YViewCorler、10 1 terfae YYViewCotroler()2 porty(nonatmic,strg)CALayer*myLayer;3 en 14 1 imlemntatin YYVewCntroller 6 17 (vod)ieDLad 18 19 super vieDidLoa;20 21 /创建 layer 2 CALayr mer=CALa
12、er lye;23 /设置 lae得属性 2 mayer、onCGRectMak(0,0,150,6);5 myLaye、ackgroundClo=UICoor ywlr、GColor;6 mLaer、pitio=CGon(0,50);27 mLayer、ahrPoi=GPointak(0,0);8 mLayer、crneradiu=40;29 /添加 layer 0 self、iew、lae adSublyr:myayer;31 elf、myLayer=myyr;32 3(void)tocheBegn:(St)touches withEvet:(Event)event 5 3 /1、创建动画
13、 CABasiAimton anim=CBsicAnimtion aimatioWiKePath:”unds”;/1、1 设置动画执行时间 39 anm、drati、0;40 /1、设置动画执行完毕后不删除动画 4 anim、revedOnplion=NO;4 1、3 设置保存动画得最新状态 43 aima、fillode=kCFillModeForwrds;4 /、4 修改属性,执行动画 5 ania、tal=Valu valueWitCRect:CGRectMk(,0,200,0);46 /2、添加动画到 laye 4 sf、mLayer dimtion:anim orKy:;48 4 5
14、0 n 实现效果:四、旋转动画 代码示例:1/2/YYViwontoller、m 3/09核心动画旋转 4/Created appe 14-62、/Cyrght(c)2014年 ice、l rigs esered、7/8 9 mport”YYViewCtrler、h 10 11 interce YVewControler()2 propety(nontomic,strong)CALayer mLaye;13 end 14 15 implementan VieCntrole 16 (void)viewDido 7 18 super vewDdLoad;1 2 /创建 laye 21 CLayer
15、 myayer=ALyr laye;22 /设置 layer 得属性 23 yLyr、oud=CectMak(,0,15,0);24 ayer、acgondColrIColor yllwlor、CGC;2 myLay、pitionCGPointMke(,50);26 myLae、anhorPot=CGPontMak(0,0);2 Layr、coraiu=40;8 /添加 layer 29 self、vie、lyer adSblaer:myer;0 self、mLyer=myLayr;31 2 -(vid)tucsBegn:(SSet)tchs wihEvent:(UIEve*)eent 34
16、35 /1、创建动画 36 CAsnimatin*anmaABasicAnimio animationithKyP:transfo;7 /、设置动画执行时间 3 aim、duatin=2、0;39 /1、2 修改属性,执行动画 ania、tVlue=NSVa vaueWhCrasfom:ATransform3DakeRotatin(M_I_2+PI_4,,1,0);41 /1、3 设置动画执行完毕后不删除动画 42 anima、removeOnpletion=NO;43 /1、4 设置保存动画得最新状态 44 aia、fillodkCAFillModForwds;45 46 /2、添加动画到a
17、yer 47 slf、yLayer adnmatin:ania frKey:nil;4 49 end 实现效果:提示:如果要让图形以D 得方式旋转,只需要把 CAranfo3Makeotato在 z 方向上得值改为 1 即可。anima、tVale NValu vaueWthATasrm3D:CATransf3DMakeRotation(M_PI_+MI4,1,1,);四、补充 可以通过 transorm(KC)得方式来进行设置.代码示例(平移):1 impor”YYiwControlle、”2 3 itrfac YYViwCtrole()4 propety(noaic,srg)CALayer
18、 yLer;d 6 7 impementtion YYVewonrollr (void)viewDidLoad 9 0 uper vwidLoa;1 2 /创建 lyer 3 ALaye*yLer=CLayer lar;1 /设置 layr 得属性 myLayer、onds=CGRecMak(,0,15,60);16 myLay、bgodoloUIolor yelwClo、CClr;1 myyer、postin=GPointake(50,5);8 may、ahorPont=CGPtMak(0,0);9 myLa、conrRadis=40;20 /添加ar 21 slf、ew、ay addlae
19、r:myLyer;22 elf、mer=myer;23 4 2(vo)oucesBegn:(S*)touches wihEvet:(UIEvent)vent 2 2 1、创建动画 8 ABscAnimation nimaCABicAimaio animton;2 anim、keyath=transfrm;30 /1、1 设置动画执行时间 31 nima、duan=2、0;32 /、修改属性,执行动画 3 34 ama、toVaueNSVal valueWthCTransfrm3:Canform3DMakeTnsatin(0,100,);5 1、设置动画执行完毕后不删除动画 36 aima、remednpeton=NO;7 /1、4 设置保存动画得最新状态 3 anima、illMde=kCFillMoeForward;9 4 /、添加动画到ayr 41 self、myLaye addAnimation:anima frKey:il;42
限制150内