動畫不回到初始

2021-06-16 19:21:41 字數 830 閱讀 8387

cabasicanimation fillmode和removedoncompletion

1 rotationanimation.removedoncompletion = no;

2 3 rotationanimation.fillmode = kcafillmodeforwards;

fillmode的作用就是決定當前物件過了非active時間段的行為. 比如動畫開始之前,動畫結束之後。如果是乙個動畫caanimation,則需要將其removedoncompletion設定為no,要不然fillmode不起作用.

下面來講各個fillmode的意義 

kcafillmoderemoved 這個是預設值,也就是說當動畫開始前和動畫結束後,動畫對layer都沒有影響,動畫結束後,layer會恢復到之前的狀態 

kcafillmodeforwards 當動畫結束後,layer會一直保持著動畫最後的狀態 

kcafillmodebackwards 這個和kcafillmodeforwards是相對的,就是在動畫開始前,你只要將動畫加入了乙個layer,layer便立即進入動畫的初始狀態並等待動畫開始.你可以這樣設定測試**,將乙個動畫加入乙個layer的時候延遲5秒執行.然後就會發現在動畫沒有開始的時候,只要動畫被加入了layer,layer便處於動畫初始狀態 

kcafillmodeboth 理解了上面兩個,這個就很好理解了,這個其實就是上面兩個的合成.動畫加入後開始之前,layer便處於動畫初始狀態,動畫結束後layer保持動畫最後的狀態.

animate.removedoncompletion = no;

animate.fillmode = kcafillmodeboth;

點選回到頂部的緩衝動畫

動畫函式 function animate obj,target,callback 呼叫的時候 callback 先清除以前的定時器,只保留當前的乙個定時器執行 clearinterval obj.timer obj.timer setinterval function callback callb...