fillMode到底做了什么?

时间:2009-07-22 17:05:06

标签: iphone cocoa-touch core-animation

文档并没有真正谈论技术上的内容。

fadeInAnimation.fillMode = kCAFillModeForwards;

我真的没有看到这种效果。我有一个alpha设置为0.0的视图。然后我淡入它。但是当我取消注释时,没有任何变化。相同的行为。我想了解这个fillMode真正做了什么。

2 个答案:

答案 0 :(得分:47)

来自CAMediaTiming protocol documentation

  

确定接收者是否   演示文稿被冻结或删除一次   它的有效期已经完成。

这决定了动画结束时会发生什么。默认情况下,它设置为kCAFillModeRemoved,这意味着动画完成时动画更改将被撤消。如果将其切换为kCAFillModeForwards,则动画引起的更改将会消失。

请注意,您可能还需要将removedOnCompletion属性设置为NO以防止移除动画,这会使此设置无效。

答案 1 :(得分:6)

让我给出一个更明确的答案:
虽然在外观上将动画的fillMode属性设置为kCAFillModeForwards(或kCAFillModeBoth),同时将removedOnCompletion设置为NO可以在动画完成时将图层保持在最终状态fillMode的使用不是设计方式。如果你有其他动画添加到同一个keyPath

,实际上会有害

(顺便说一下,保持动画最终状态的正确方法是更改​​属性值以匹配动画的最终帧。)

fillMode 真正使用的内容与分组动画中的子动画有关,因此您可以指定所需状态的特定子动画