1

CALayerユーザーが画面をタップしたときに生成しています。次に、を使用してそのレイヤーを特定の位置に変換していAnimationます。次に、次のコードを使用して削除しますanimationDidStop

 [mylayer removeFromSuperLayer]; 

ここではすべてが正常に機能していますが、前のアニメーションが停止する前にもう一度タップすると、現在のレイヤーがスーパーレイヤーから削除されません。このような状況でどのように削除しますか?

4

1 に答える 1

0

毎回新しいレイヤーを作成する場合、デリゲートメソッドは現在のレイヤーのみを削除できます(つまり、古いレイヤーは失われます)

アニメーションの周りにペアを使用しCATransaction begin/commitて完了ブロックを追加してみることができます。これにより、各アニメーションのレイヤー参照を渡すことができます。

[CATransaction begin];

[CATransaction setCompletionBlock:^{
    [myLayer removeFromSuperlayer];
}];

//your existing animation code

[CATransaction commit];
于 2012-12-15T12:04:24.080 に答える