Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 制作动画后如何删除CALayer?_Ios_Objective C_Xcode - Fatal编程技术网

Ios 制作动画后如何删除CALayer?

Ios 制作动画后如何删除CALayer?,ios,objective-c,xcode,Ios,Objective C,Xcode,我有一个视图,其中我在drawRect方法中绘制了所有Calayer。在方法内部,我启动动画,在完成块上,我从超级层移除层及其子层。但是,它一直作为子层添加回我的动画中。如何防止这种情况发生 - (void)drawRect:(CGRect)rect { ... [CATransaction begin]; { [CATransaction setAnimationDuration: 5.0];//Dynamic Duration [CATransac

我有一个视图,其中我在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];

如何确保我的子层和它的子层只为动画显示一次,然后永远消失?

出于某种原因,我必须将两者的不透明度都设置为0,同时删除它们。奇怪

[CATransaction setCompletionBlock:^{
            [tutorialCircle removeFromSuperlayer];
            tutorialCircle.opacity = 0.0;
            strokePart.opacity = 0.0;
            [strokePart removeFromSuperlayer];
        }];