2012-07-07 52 views
0

看起来,当我从CALayer中移除动画或将其设置为隐藏时,在删除图层之前,该图层在约半秒内淡出,而我希望它也停止,当我也想要它。去除图层在Core Animation中被移除或隐藏时的不透明度和时间间隔

只要点击了CALayer,它就应该停止,但似乎喜欢淡入淡出的效果应用于图层。动画垂直移动CALayer,当它在水龙头上被移除时,你可以看到它淡出。

我需要它在被点击时被移除的原因是因为UIImageView将其替换为它的位置并运行关键帧图像动画。

回答

0

您可以通过disabling layer actions控制这种自动动画:

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue 
       forKey:kCATransactionDisableActions]; 
[aLayer removeFromSuperlayer]; 
[CATransaction commit]; 
+0

它似乎没有工作,我的动画是一个遵循的路径'CAKeyFrameAnimation' - 但我认为这不应该是个问题吗? – 2012-07-07 20:28:31

+0

我不确定为什么禁用你的行为,如你在其他答案中所做的,与按照我描述的方式禁用它们会有所不同。奇! – 2012-07-07 20:46:19

+0

这就是我的想法,我也看了你发给我的代码和链接,因为它是一个错字或什么的,但一切都好,其他人似乎使用相同的代码来解决同一个问题,它必须是问题在我的结尾某处 – 2012-07-07 21:56:40

0

现在没关系,我想最好的办法是有效地抵消母公司层的action财产。

parentLayer.actions = [[NSMutableDictionary alloc] initWithObjectsAndKeys: 
          [NSNull null], @"onOrderIn", 
          [NSNull null], @"onOrderOut", 
          [NSNull null], @"sublayers", 
          [NSNull null], @"contents", 
          [NSNull null], @"bounds", 
          nil]; 

[childLayer removeFromSuperlayer]; 

在我来说,我只需要到“子层”中的数据NSDict

parentLayer.actions = [[NSMutableDictionary alloc] initWithObjectsAndKeys: [NSNull null], @"sublayers", 
          nil]; 

[childLayer removeFromSuperlayer];