iOS 旋轉動畫的幾種實現方式

2021-08-03 02:12:18 字數 1738 閱讀 4445

這種方法是最簡單的方法

cabasicanimation *animation = [cabasicanimation animationwithkeypath:@「transform.rotation.z"];

//預設是順時針效果,若將fromvalue和tovalue的值互換,則為逆時針效果

animation.fromvalue = [nsnumbernumberwithfloat:0.f];

animation.tovalue = [nsnumbernumberwithfloat: m_pi *2];

animation.duration = 3;

animation.autoreverses = no;

animation.fillmode = kcafillmodeforwards;

animation.repeatcount = maxfloat; //如果這裡想設定成一直自旋轉,可以設定為maxfloat,否則設定具體的數值則代表執行多少次

[view.layer addanimation:animation forkey:nil];

這種方法用到了coregraphics庫中的cgpathaddarc方法

cgmutablepathref path = cgpathcreatemutable();

//cgpathaddarc函式是通過圓心和半徑定義乙個圓,然後通過兩個弧度確定乙個弧線。注意弧度是以當前座標環境的x軸開始的。

//需要注意的是由於ios中的座標體系是和quartz座標體系中y軸相反的,所以ios uiview在做quartz繪圖時,y軸已經做了scale為-1的轉換,因此造成cgpathaddarc函式最後乙個是否是順時針的引數結果正好是相反的,也就是說如果設定最後的引數為1,根據引數定義應該是順時針的,但實際繪圖結果會是逆時針的!

//嚴格的說,這個方法只是確定乙個中心點後,以某個長度作為半徑,以確定的角度和順逆時針而進行旋轉,半徑最低設定為1,設定為0則動畫不會執行

cgpathaddarc(path, null, view.centerx, view.centery, 1, 0,m_pi * 2, 1);

cakeyframeanimation * animation = [cakeyframeanimationanimationwithkeypath:@"position"];

animation.path = path;

cgpathrelease(path);

animation.duration = 3

; animation.repeatcount = 500

; animation.autoreverses = no;

animation.rotationmode =kcaanimationrotateauto;

animation.fillmode =kcafillmodeforwards;

[layer addanimation:animation forkey:nil];

[view.layer addanimation:animation2 forkey:nil];

前兩種方法是基於coreanimation實現的,還有種比較簡單的旋轉動畫:

[uiview animatewithduration:0.2f animations:^

}];

旋轉動畫的簡單使用

設定rotate動畫 param view 設定動畫的物件 param fromdegrees 初始時的角度 param todegrees 結束時的角度 param pivotx 旋轉動畫對於x座標開始位置 param pivoty 旋轉動畫對於y座標開始位置 param duration 動畫時...

css3 HTML實現太極旋轉動畫

1.實現了太極圖在手機端與pc端的旋轉動畫 八卦圖title head type text css body keyframes xto 八卦 八卦 div first child media max width 500px 八卦 div nth child 2 八卦 div nth child 3...

iOS幾種動畫效果的實現

做過乙個專案,裡面涉及到的動畫效果比較多,在這裡做個小小的總結。實現乙個物體在某段時間從乙個點移動到另乙個點。效果如下 動畫相關 如下 動畫模型 inte ce animationmodel nsobject property nonatomic,strong nsarray images prop...