我正在使用 CABasicAnimation 对 CALayer 进行动画处理,并希望该层在动画完成时保持在原位。几乎所有解决方案都显示以下内容,效果很好
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
然而,2010 年 WWDC 演讲者在核心动画实践第 1 部分(~38-41 分钟)中表示,发现的消失层的大多数解决方案都是“伪造的”,为层设置动画的正确方法大致如下
animation.fromValue = [NSNumber numberWithFloat:layer.position.y];
layer.position = CGPointMake(layer.position.y, endPoint);
animation.toValue = [NSNumber numberWithFloat:endPoint];
给出的原因是removedOnCompletion/fillMode的方案只是卡住了表现层,实际层还是设置了原来的位置。
如果我误解了演讲者的意思,请纠正我。
如果我对他的理解是正确的,那什么时候重要呢?
谢谢,史蒂夫
最佳答案
这取决于你想做什么......你自己的解释似乎很清楚。
如果您只对属性进行动画处理而不改变实际值,那么“所见即所得”实际上不同于“是什么”。大多数时候,你不想要那样。 (并且当你使用UIView
动画,或者CALayer
隐式动画时,“什么是”和“你看到什么”是同步的,这与直接setter语法是一致的)。
但在某些情况下,保留实际值并在屏幕上临时显示不同的内容可能很有用……只要您知道自己在做什么!
关于objective-c - 防止 CABasicAnimation 中图层消失的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151504/