Objective c 防止CABASICIANIzation中图层消失的正确方法?
我正在使用CABasicAnimation设置CALayer的动画,并希望该层在动画完成时保持在原位。几乎所有的解决方案都会显示以下内容,这很好Objective c 防止CABASICIANIzation中图层消失的正确方法?,objective-c,cabasicanimation,Objective C,Cabasicanimation,我正在使用CABasicAnimation设置CALayer的动画,并希望该层在动画完成时保持在原位。几乎所有的解决方案都会显示以下内容,这很好 animation.removedOnCompletion = NO; animation.fillMode = kCAFillModeForwards; 然而,2010年《核心动画实践》第1部分(约38-41分钟)中的WWDC演讲者说,发现的消失层的大多数解决方案都是“伪造的”,正确的层动画制作方法大致如下 animation.fromValue
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
然而,2010年《核心动画实践》第1部分(约38-41分钟)中的WWDC演讲者说,发现的消失层的大多数解决方案都是“伪造的”,正确的层动画制作方法大致如下
animation.fromValue = [NSNumber numberWithFloat:layer.position.y];
layer.position = CGPointMake(layer.position.y, endPoint);
animation.toValue = [NSNumber numberWithFloat:endPoint];
给出的原因是removedOnCompletion/fillMode解决方案仅冻结表示层,而实际层仍设置了其原始位置
如果我误解了演讲者,请纠正我
如果我对他的理解是正确的,那什么时候重要呢
谢谢,史蒂夫,你理解得对
这意味着,当你在一个层上制作动画时,会创建一个称为“表示层”的“特殊”层,动画实际上发生在该层上,但实际的层不会改变。事实上,您必须将该属性设置为动画末尾的层,以便将该层与最终动画状态“同步”。这取决于您要执行的操作。。。你自己的解释似乎很清楚 如果只设置属性的动画而不更改实际值,则“所见”实际上与“是什么”不同。大多数时候,你不想这样。(当您使用
UIView
动画或CALayer
隐式动画时,“是什么”和“看到什么”是同步的,这与直接setter语法一致)
但在某些情况下,保留实际值和在屏幕上临时显示不同的内容可能会很有用。。。只要你知道你在做什么 谢谢你的回复-对不起,我的回复有点慢。我可能从来没有遇到过需要对表示层或实际层做更多的事情,这就是为什么我在使用这两种方法时遇到困难。再次感谢。史蒂夫