核心動畫CoreAnimation

核心動畫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;

相關文章
相關標籤/搜索