У меня есть представление, в котором я рисую все свои 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];
Как я убеждаюсь, что мой подслой и его подуровень только показаны для анимации за один раз, а затем ушли навсегда?