iOSApp基本的動(dòng)畫(huà)就是移動(dòng),旋轉(zhuǎn),縮放 這些,UIView的分類UIViewKeyframeAnimations已經(jīng)封裝了一些常用的,但是如果要想自己定制動(dòng)畫(huà)還需要運(yùn)用動(dòng)畫(huà)的框架
CoreAnimation
UIView封裝了CALayer,當(dāng)我們要設(shè)置邊框,圓角的時(shí)候通常會(huì)用到這個(gè)layer, 其實(shí)UIView就是對(duì)CALayer進(jìn)行了封裝,并添加了觸摸事件的處理,也就是說(shuō)所有繼承于UIView的類可見(jiàn)的其實(shí)都是CALayer, 做動(dòng)畫(huà)的時(shí)候也是對(duì)UIView上的layer操作的

看任何一個(gè)框架先了解了基本結(jié)構(gòu)之后再去看細(xì)節(jié)會(huì)比較清晰, CAAnimation是核心動(dòng)畫(huà)的基類,實(shí)現(xiàn)了CAMediaTiming協(xié)議,它有三個(gè)子類CAAnimationGroup動(dòng)畫(huà)組,CAPropertyAnimation屬性動(dòng)畫(huà),CATransition轉(zhuǎn)場(chǎng)動(dòng)畫(huà),基本的動(dòng)畫(huà)要以通過(guò)CAPropertyAnimation實(shí)現(xiàn),復(fù)雜些的可以加到動(dòng)畫(huà)組CAAnimationGroup當(dāng)中去
案例

上圖中的動(dòng)畫(huà)是由多個(gè)border,transform.scale,cornerRadius,path等組成的較為復(fù)雜動(dòng)畫(huà),動(dòng)畫(huà)中可以看到是由快到慢然后再回旋到初使位置,這里有個(gè)時(shí)間函數(shù)CAMediaTimingFunction來(lái)控制動(dòng)畫(huà)的速度,duration動(dòng)畫(huà)時(shí)間

至于CAAnimation的各種屬性就要自己去多擼代碼試, 這里說(shuō)個(gè)值得注意的點(diǎn), [CABasicAnimation animationWithKeyPath:@"borderColor"], keyPath 一般可能不知道要怎么寫(xiě),寫(xiě)什么, 因?yàn)閯?dòng)畫(huà)是對(duì)CALayer操作的,去CALayer的API中查一下Animatable 可動(dòng)畫(huà)的屬性即可