2017-02-02 14 views
0

私はすべてのCALayersをdrawRectメソッドの中に描画するビューを持っています。メソッドの中で私はアニメーションを開始し、完成ブロックでレイヤーとそのサブレイヤーをスーパーレイヤーから削除します。しかし、それは私のアニメーションのサブレイヤとして追加され続けます。これを防ぐ方法を教えてください。アニメーションが完了したらCALayerを削除するには?

- (void)drawRect:(CGRect)rect 
{ 

... 

[CATransaction begin]; 
    { 
     [CATransaction setAnimationDuration: 5.0];//Dynamic Duration 
     [CATransaction setCompletionBlock:^{ 
      [tutorialCircle removeFromSuperlayer]; 
      [strokePart removeFromSuperlayer]; 
     }]; 
... 

for (NSUInteger i = 0; i < 3; i++) 
     { 
      strokePart = [[CAShapeLayer alloc] init]; 
      strokePart.fillColor = [[UIColor clearColor] CGColor]; 
      strokePart.frame = tutorialCircle.bounds; 
      strokePart.path = tutorialCircle.path; 
      strokePart.lineCap = tutorialCircle.lineCap; 
      strokePart.lineWidth = tutorialCircle.lineWidth; 
... 

[tutorialCircle addSublayer: strokePart]; 

どのように私は私のサブレイヤとそのサブレイヤは一度だけのためのアニメーションのために示され、その後、永遠に失われていることを確認していますか?

答えて

-1

何らかの理由でそれらを削除すると同時に、両方の不透明度を0に設定する必要がありました。奇妙な。

[CATransaction setCompletionBlock:^{ 
      [tutorialCircle removeFromSuperlayer]; 
      tutorialCircle.opacity = 0.0; 
      strokePart.opacity = 0.0; 
      [strokePart removeFromSuperlayer]; 
     }]; 
関連する問題