核心動畫CoreAnimationoop
基本動畫:CABasicAnimation動畫
幀動畫:CAKeyframeAnimationspa
組動畫:CAAnimationGroupcomponent
CoreAnimation時直接做用在CALayer上的,並不是UIView。orm
CABasicAnimation:平移,旋轉,縮放視頻
CAKeyframeAnimation:按路徑移動對象
若想將關鍵幀動畫中的路徑繪製出來,建立一個繼承自UIView的子類,與self.view關聯,在子類UIView中的drawRect方法中繪製。繼承
1、基本動畫的建立步驟:圖片
建立基本動畫對象,設置動畫的屬性(value,duration),將動畫添加到要做用layer。事務
動畫完成後默認會回到初始位置,此時若想layer定在動畫完成時的位置,須要設置動畫完成後不刪除且修改fillMode爲kCAFillModeForwards。
注意:
若是fillMode=kCAFillModeForwards和removedOnCompletion=NO,那麼在動畫執行完畢後,圖層會保持顯示動畫執行後的狀態。但在實質上,圖層的屬性值仍是動畫執行前的初始值,並無真正被改變。好比,CALayer的position初始值爲(0,0),CABasicAnimation的fromValue爲(10,10),toValue爲(100,100),雖然動畫執行完畢後圖層保持在(100,100)這個位置,實質上圖層的position仍是爲(0,0).
BasicAnimation:
fromValue:
toValue:
byValue:
指定keyPath的字符串內容@「transform.translation」、@「transform.scale」、@「transform.rotation」與value屬性能夠經過識別value值的類型,好比CGPoint、NSNumber、弧度來自動作出平移、縮放和旋轉的動畫。
2、幀動畫的建立步驟:
建立幀動畫對象,設置幀動畫values和duration、repeatCount等屬性,添加幀動畫到layer上。
CALayer的屬性:
1.若想獲得帶圓環的圖片
能夠設置圖片所在layer的邊框(border的width、color、cornerRadius),設置邊框圓角並進行裁剪(maskToBounds)即可以獲得帶圓環的圖片。
2.設置背景投影陰影
設置陰影顏色、偏移量、透明度。陰影模糊度shadowRadius。
3.若須要設置layer四周陰影,繪製陰影路徑
陰影默認在右下角,左上無陰影,若想四邊陰影寬度相同,設置x,y各自爲多餘寬度的一半。
禁用隱式動畫步驟:
開啓一個顯式CATransaction事務
修改事務屬性
提交事務
CADisplayLink 與 NSTimer 有什麼不一樣?
iOS設備的屏幕刷新頻率是固定的,CADisplayLink在正常狀況下會在每次刷新結束都被調用,精確度至關高。
NSTimer的精確度就顯得低了點,好比NSTimer的觸發時間到的時候,runloop若是在阻塞狀態,觸發時間就會推遲到下一個runloop週期。而且 NSTimer新增了tolerance屬性,讓用戶能夠設置能夠容忍的觸發的時間的延遲範圍。
CADisplayLink使用場合相對專注,適合作UI的不停重繪,好比自定義動畫引擎或者視頻播放的渲染。
NSTimer的使用範圍要普遍的多,各類須要單次或者循環定時處理的任務均可以使用。
從系統獲取時間步驟:::
//獲取當前日曆
NSCalendar *currentCal = [NSCalendar currentCalendar];
//獲取當前系統時間
NSDate *currentDate = [NSDate date];
//從當前時間中獲取秒數
NSDateComponents * components = [currentCal components:NSCalendarUnitMinute fromDate:currentDate];
NSInteger minute = components.minute;