[myLayer setPosition:lastPosition];
以上設定 myLayer 的最後位置,然後 myLayer 就會進行動畫,移動到最後位置,並且停留在最後位置。可是當使用 CABasicAnimation 物件來進行移動動畫時, myLayer 會移動到最後位置,然後呢? myLayer 就會回到開始位置。所以,如何解決?
在 CABasicAnimation 的屬性中, 我們需要針對 removedOnCompletion 以及 fillMode 兩個屬性做設定。參考程式碼如下:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.duration = 3.0;
animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(aLayer.position.x, aLayer.position.y)];
animation.toValue = [NSValue valueWithCGPoint:CGPointMake(aLayer.position.x, aLayer.position.y + 100.0)];
//以下為關鍵設定,設定屬性 fillMode 以及 removedOnCompletion,讓動畫物件停留在最後位置
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
fillMode 屬性是決定當動畫完成之後,最後動畫的顯示結果為何?是要回到最初還是最後的顯示狀態。可參考 Apple 的官方文件,CAMediaTiming Protocol Reference。
沒有留言:
張貼留言