2017-02-02 3 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, так и удалить их по какой-то причине. Weird.

[CATransaction setCompletionBlock:^{ 
      [tutorialCircle removeFromSuperlayer]; 
      tutorialCircle.opacity = 0.0; 
      strokePart.opacity = 0.0; 
      [strokePart removeFromSuperlayer]; 
     }]; 
Смежные вопросы