首先介紹一下CATransition和CAMediaTimingFunction兩個類:
CATransition
CATransition是CAAnimation的子類,主要用到了type屬性
type是用于設置動畫的過度方式,主要包括以下4個類型:
kCATransitionFade 淡入淡出的效果
kCATransitionMoveIn 移動效果
kCATransitionPush 推送效果
kCATransitionReveal 揭開的效果菌瘫,將舊視圖移開奈偏,顯示新的視圖飞几。
CAMediaTimingFunction
他主要的作用是動畫緩沖的作用
這里有一些方式來創(chuàng)建kCAMediaTimingFunctionLinear后室,最簡單的方式是調(diào)用+timingFunctionWithName:的構造方法微渠。這里傳入如下幾個常量之一:
kCAMediaTimingFunctionLinear?立即加速并且保持勻速到達終點
kCAMediaTimingFunctionEaseIn?慢慢加速然后突然停止的方法
kCAMediaTimingFunctionEaseOut?全速開始,然后慢慢減速停止
kCAMediaTimingFunctionEaseInEaseOut?慢慢加速然后再慢慢減速
kCAMediaTimingFunctionDefault?和kCAMediaTimingFunctionEaseInEaseOut很類似咧擂,但是加速和減速的過程都稍微有些慢,它和kCAMediaTimingFunctionEaseInEaseOut的區(qū)別很難察覺檀蹋, 可能是蘋果覺得它對于隱式動畫來說更適合(然后對UIKit就改變了想法松申,而是使用kCAMediaTimingFunctionEaseInEaseOut作為默認效果)云芦,雖然它的名字說 是默認的,但還是要記住當創(chuàng)建顯式的CAAnimation它并不是默認選項(換句話說贸桶,默認的圖層行為動畫用kCAMediaTimingFunctionDefault作為它們的計時方法)
示例代碼:
CATransition *transition = [CATransition animation];
?transition.type = kCATransitionFade;
? transition.duration=0.8f;
?transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
?[image.layer addAnimation:transitionforKey:nil];