CALayerユーザーが画面をタップしたときに生成しています。次に、を使用してそのレイヤーを特定の位置に変換していAnimationます。次に、次のコードを使用して削除しますanimationDidStop:
[mylayer removeFromSuperLayer];
ここではすべてが正常に機能していますが、前のアニメーションが停止する前にもう一度タップすると、現在のレイヤーがスーパーレイヤーから削除されません。このような状況でどのように削除しますか?
CALayerユーザーが画面をタップしたときに生成しています。次に、を使用してそのレイヤーを特定の位置に変換していAnimationます。次に、次のコードを使用して削除しますanimationDidStop:
[mylayer removeFromSuperLayer];
ここではすべてが正常に機能していますが、前のアニメーションが停止する前にもう一度タップすると、現在のレイヤーがスーパーレイヤーから削除されません。このような状況でどのように削除しますか?
毎回新しいレイヤーを作成する場合、デリゲートメソッドは現在のレイヤーのみを削除できます(つまり、古いレイヤーは失われます)
アニメーションの周りにペアを使用しCATransaction begin/commitて完了ブロックを追加してみることができます。これにより、各アニメーションのレイヤー参照を渡すことができます。
[CATransaction begin];
[CATransaction setCompletionBlock:^{
[myLayer removeFromSuperlayer];
}];
//your existing animation code
[CATransaction commit];