fillMode究竟做了什么?
问题描述:
文档并没有真正谈论这在技术上的作用。fillMode究竟做了什么?
fadeInAnimation.fillMode = kCAFillModeForwards;
我并没有真正看到这个效果。我有一个alpha设置为0.0的视图。然后我将它淡入。但是当我取消注释关于h的行时,没有任何变化。同样的行为。我想了解这个fillMode的功能。
答
从CAMediaTiming protocol documentation:
确定接收的 呈现被冻结或删除一次 其活动期间完成。
这就决定了在动画的最后会发生什么。默认情况下,它被设置为kCAFillModeRemoved,这意味着动画完成时动画更改将被撤消。如果将其切换到kCAFillModeForwards,由动画引起的更改将停滞不前。
请注意,还可能需要向removedOnCompletion属性设置为NO,以防止你的动画被删除,这将使该设置无效。
答
让我给它一个更明确的答案:
虽然在外观动画的fillMode
属性设置为kCAFillModeForwards
(或kCAFillModeBoth),并在同一时间设置removedOnCompletion
到NO
可以保持你的层在其最后的状态,当动画完成但这种使用fillMode
不是设计方式。实际上造成伤害,如果你有其他的动画添加到同样的keyPath
(顺便说一下,对于保持动画的最终状态,正确的做法是改变属性值来匹配动画的最后一帧。)
什么fillMode
真正使用是这样你就可以在所期望的状态指定特定的子动画
很好的解释分组的动画中的小孩动画连接!是的,我将removedOnCompletion设置为NO。这就是为什么我在fillMode中看不到变化,对吧?为什么叫做“fillMode”?所以内部它只不过是在所有动画插值例程之后保留新的计算参数? – Thanks 2009-07-22 18:55:50