objective-c - 防止 CABasicAnimation 中图层消失的正确方法?

标签 objective-c cabasicanimation

我正在使用 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/

相关文章:

iOS 7 UIImagePickerController 状态栏问题

iphone - 为什么我无法执行任何 CABasicAnimation 或关键帧动画内容?

iOS UIView 属性不使用 CABasicAnimation 进行动画处理

iOS动画绘制多个圆,只显示一个

ios - 缩放 map View 时动画 AnnotationView 消失了吗?

objective-c - iOS - XML 解析内存泄漏

objective-c - 沙盒核心WLAN?

objective-c - 方法 'documentation'

ios - Objective-C 应该在使用后将 Arrays 设置为 nil 吗?

ios - 如何仅在复合 UIView 的一部分应用 3D 透视变换?