亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

CoreAnimation之CABasicAnimation

2019-11-14 18:09:17
字體:
來源:轉載
供稿:網友

在iOS中,圖形可分為以下幾個層次:

越上層,封裝程度越高,動畫實現越簡潔越簡單,但是自由度越低;反之亦然。本文著重介紹Core Animation層的基本動畫實現方案。

在iOS中,展示動畫可以類比于顯示生活中的“拍電影”。拍電影有三大要素:演員+劇本+開拍,概念類比如下:

演員--->CALayer,規定電影的主角是誰劇本--->CAAnimation,規定電影該怎么演,怎么走,怎么變換開拍--->AddAnimation,開始執行

一、概念介紹

1.1CALayer是什么呢?

復制代碼
CALayer是個與UIView很類似的概念,同樣有layer,sublayer...,同樣有backgroundColor、frame等相似的屬性,我們可以將UIView看做一種特殊的CALayer,只不過UIView可以響應事件而已。一般來說,layer可以有兩種用途,二者不互相沖突:一是對view相關屬性的設置,包括圓角、陰影、邊框等參數,更詳細的參數請點擊這里;二是實現對view的動畫操控。因此對一個view進行core animation動畫,本質上是對該view的.layer進行動畫操縱。
復制代碼

1.2CAAnimation是什么呢?

CAAnimation可分為四種:

  • 1.CABasicAnimation
  • 通過設定起始點,終點,時間,動畫會沿著你這設定點進行移動??梢钥醋鎏厥獾腃AKeyFrameAnimation
  • 2.CAKeyframeAnimation
  • Keyframe顧名思義就是關鍵點的frame,你可以通過設定CALayer的始點、中間關鍵點、終點的frame,時間,動畫會沿你設定的軌跡進行移動
  • 3.CAAnimationGroup
  • Group也就是組合的意思,就是把對這個Layer的所有動畫都組合起來。PS:一個layer設定了很多動畫,他們都會同時執行,如何按順序執行我到時候再講。
  • 4.CATransition
  • 這個就是蘋果幫開發者封裝好的一些動畫

二、動手干活

實踐出真知,看個例子就知道:

比如我們想實現一個類似心跳的縮放動畫可以這么做,分為演員初始化、設定劇本、電影開拍三個步驟:

 
- (void)initScaleLayer{    //演員初始化    CALayer *scaleLayer = [[CALayer alloc] init];    scaleLayer.backgroundColor = [UIColor blueColor].CGColor;    scaleLayer.frame = CGRectMake(60, 20 + kYOffset, 50, 50);    scaleLayer.cornerRadius = 10;    [self.view.layer addSublayer:scaleLayer];    [scaleLayer release];        //設定劇本    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];    scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0];    scaleAnimation.toValue = [NSNumber numberWithFloat:1.5];    scaleAnimation.autoreverses = YES;    scaleAnimation.fillMode = kCAFillModeForwards;    scaleAnimation.repeatCount = MAXFLOAT;    scaleAnimation.duration = 0.8;        //開演    [scaleLayer addAnimation:scaleAnimation forKey:@"scaleAnimation"];}

 

- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.    [self initScaleLayer];}

  

效果請參考附圖中的綠色方塊(我不懂在mac下怎么錄制gif圖,先借用kk的圖)。其他效果可以依葫蘆畫瓢輕松實現。想要實現不同的效果,最關鍵的地方在于CABasicAnimation對象的初始化方式中keyPath的設定。在iOS中有以下幾種不同的keyPath,代表著不同的效果:

此外,我們還可以利用GroupAnimation實現多種動畫的組合,在GroupAnimation中的各個動畫類型是同時進行的。

 - (void)initGroupLayer {     //演員初始化     CALayer *groupLayer = [[CALayer alloc] init];     groupLayer.frame = CGRectMake(60, 340+100 + kYOffset, 50, 50);     groupLayer.cornerRadius = 10;     groupLayer.backgroundColor = [[UIColor purpleColor] CGColor];     [self.view.layer addSublayer:groupLayer];     [groupLayer release];        //設定劇本     CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];     scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0];     scaleAnimation.toValue = [NSNumber numberWithFloat:1.5];     scaleAnimation.autoreverses = YES;     scaleAnimation.repeatCount = MAXFLOAT;     scaleAnimation.duration = 0.8;          CABasicAnimation *moveAnimation = [CABasicAnimation animationWithKeyPath:@"position"];     moveAnimation.fromValue = [NSValue valueWithCGPoint:groupLayer.position];     moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(320 - 80,                                                                   groupLayer.position.y)];     moveAnimation.autoreverses = YES;     moveAnimation.repeatCount = MAXFLOAT;     moveAnimation.duration = 2;          CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];     rotateAnimation.fromValue = [NSNumber numberWithFloat:0.0];     rotateAnimation.toValue = [NSNumber numberWithFloat:6.0 * M_PI];     rotateAnimation.autoreverses = YES;     rotateAnimation.repeatCount = MAXFLOAT;     rotateAnimation.duration = 2;          CAAnimationGroup *groupAnnimation = [CAAnimationGroup animation];     groupAnnimation.duration = 2;     groupAnnimation.autoreverses = YES;     groupAnnimation.animations = @[moveAnimation, scaleAnimation, rotateAnimation];     groupAnnimation.repeatCount = MAXFLOAT;     //開演     [groupLayer addAnimation:groupAnnimation forKey:@"groupAnnimation"]; }

  

- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.    [self initGroupLayer];} 

 完整的demo工程點CAAnimationDemo.zip下載 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费观看久久黄| 国产在线视频一区| 国产日韩欧美一二三区| 91精品国产自产91精品| 欧美一级在线亚洲天堂| 欧美国产激情18| 久久国产精彩视频| 欧美小视频在线观看| 91久热免费在线视频| 欧美成人四级hd版| 成人黄色午夜影院| 欧美尤物巨大精品爽| 亚洲图片欧美日产| 欧美黑人巨大xxx极品| 日韩在线中文字| 欧美大片欧美激情性色a∨久久| 亚洲欧美综合v| 激情久久av一区av二区av三区| 国产精品视频久久久| 国产亚洲精品久久久久久| 国产精品一区二区久久| 久色乳综合思思在线视频| 日韩欧美国产激情| 毛片精品免费在线观看| 日韩视频中文字幕| 韩曰欧美视频免费观看| 欧美高清在线视频观看不卡| 亚洲国产精品推荐| 亚洲 日韩 国产第一| 疯狂蹂躏欧美一区二区精品| 日韩影视在线观看| 欧美黑人视频一区| 911国产网站尤物在线观看| 中国人与牲禽动交精品| 欧美亚洲另类视频| 日韩在线观看免费网站| 国产福利成人在线| 久久久久久久久久久免费| 欧美日韩高清区| 黄色成人在线播放| 热re91久久精品国99热蜜臀| 国产精品久久久久久久午夜| 国产视频精品va久久久久久| 亚洲国产精品字幕| 91久久久久久久一区二区| 亚洲女人天堂视频| 亚洲另类激情图| 国产日韩欧美中文在线播放| 国产精品一区专区欧美日韩| 九九九久久国产免费| 欧美老少配视频| 91精品国产91久久久久| 51色欧美片视频在线观看| 992tv在线成人免费观看| 久久69精品久久久久久久电影好| 亚洲精品网址在线观看| 久久久久久久亚洲精品| 亚洲韩国青草视频| 亚洲欧洲激情在线| 久久精品91久久香蕉加勒比| 性亚洲最疯狂xxxx高清| 亚洲精品资源在线| 国内精品久久影院| 亚洲成人精品av| 亚洲男人第一av网站| 久久精品视频一| 日韩美女视频免费在线观看| 国产精品丝袜久久久久久高清| 久久97精品久久久久久久不卡| 91干在线观看| 麻豆国产va免费精品高清在线| 欧美成人午夜视频| 亚洲图片欧洲图片av| 欧美专区在线播放| 久久久久久一区二区三区| 亚洲毛片在线免费观看| 中文字幕亚洲欧美| 国产精品久久久久秋霞鲁丝| 精品人伦一区二区三区蜜桃网站| 亚洲天堂免费视频| 欧美一区二区三区……| 久久国产精品影视| 精品国内产的精品视频在线观看| 国产精品第七十二页| 在线成人中文字幕| 日本成人在线视频网址| xvideos成人免费中文版| 欧美日韩成人免费| 亚洲美女动态图120秒| 欧美在线不卡区| 国产精品一区二区久久久| 黑人与娇小精品av专区| 成人亚洲欧美一区二区三区| 欧美亚洲国产日韩2020| 欧美成人精品激情在线观看| 精品爽片免费看久久| 亚洲最大福利视频网| 亚洲欧美精品伊人久久| 日韩中文字幕不卡视频| 欧美老肥婆性猛交视频| 亚洲最新av在线| 亚洲日韩中文字幕在线播放| 亚洲精品中文字幕有码专区| 日本国产精品视频| 日本欧美黄网站| 欧美日韩国产中文精品字幕自在自线| 96sao精品视频在线观看| 亚洲夜晚福利在线观看| 国产精品普通话| 中文字幕亚洲欧美在线| 亚洲综合社区网| 亚洲激情第一页| 日韩成人在线视频观看| 在线国产精品播放| 这里只有精品在线播放| 欧美激情一区二区三区久久久| 最新69国产成人精品视频免费| 国产精品人成电影在线观看| 亚洲美女福利视频网站| 国产精品黄色av| 国产成人亚洲综合青青| 欧美大片网站在线观看| 一区二区三区黄色| 久久影视电视剧免费网站清宫辞电视| 中文字幕亚洲二区| 日韩精品免费在线视频观看| 色樱桃影院亚洲精品影院| 怡红院精品视频| 一区二区三区四区在线观看视频| 这里只有精品久久| 亚洲欧美日韩天堂一区二区| 国产一区二区三区在线看| 亚洲欧美日韩久久久久久| 国产精品羞羞答答| 久久综合伊人77777尤物| 成人免费淫片视频软件| 国产精品一区=区| 国内精品久久久| 欧美三级欧美成人高清www| 国产亚洲一区二区精品| 欧美成人黄色小视频| 国产日韩欧美视频| 色妞欧美日韩在线| 欧美洲成人男女午夜视频| 亚洲91av视频| 国产精品91久久久久久| 韩国欧美亚洲国产| 亚洲人在线视频| 成人免费在线视频网站| 丝袜情趣国产精品| 国产日韩精品在线| 久久五月天色综合| 国产精品影片在线观看| 欧美激情视频给我| 日本精品中文字幕| 亚洲直播在线一区| 美女视频黄免费的亚洲男人天堂| 亚洲精品综合精品自拍| 亚洲国产私拍精品国模在线观看| 欧美精品久久久久久久免费观看| 国产一区二区丝袜| 欧美中文字幕在线视频| 久久精品在线视频| 精品国产电影一区|