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];