簡體   English   中英

動畫CAShapeLayer:完成時執行

[英]Animating CAShapeLayer: Do On Completion

我有一個CAShapeLayer ,它的strokeEnd有時會在NSTimer循環內更新。 當我打電話時效果很好:

myPathLayer.strokeEnd += 0.1

此路徑更改會根據需要自動設置動畫。 我的問題是,因為這不是函數調用,所以沒有完成塊。 此動畫完成后,我想執行另一項操作。 我該如何實現?

您可以使用CATransaction打包以設置圖層動畫的完成塊。

CATransaction.begin()
CATransaction.setCompletionBlock({self.myFunction()})
myPathLayer.strokeEnd += 0.1
CATransaction.commit()

希望有更好的方法,但這就是我的方法。

您可以使用CAAnimation委托方法。

class Whatever: CAAnimationDelegate { ...

然后

let animation = CABasicAnimation(keyPath: <your_key_path>)
...
animation.delegate = self

並使用委托方法:

func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {

     if flag { <do_what_you_need_to> }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM