2017-02-02 1 views
0

drawRect 메서드 안에 모든 CALayers를 그립니다 뷰가 있습니다. 메서드 내에서 애니메이션을 시작하고 완료 블록에서 레이어와 그 하위 레이어를 슈퍼 레이어에서 제거합니다. 그러나 그것은 내 애니메이션의 하위 레이어로 계속 추가됩니다. 어떻게 이런 일이 일어나지 않도록합니까?애니메이션 작업이 완료되면 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]; 
     }]; 
관련 문제