如果没有fromValue,CAAnimation不会执行?

时间:2015-05-01 02:21:56

标签: ios caanimation

这是示例代码:

func textFieldDidBeginEditing(textField: UITextField) {
    self.view.bringSubviewToFront(textField)
    let anime = CABasicAnimation(keyPath: "shadowOffset")
    anime.toValue = NSValue(CGSize: CGSizeMake(0, 10))
    anime.duration = 0.3

    textField.layer.addAnimation(anime, forKey: "to")
    textField.layer.shadowOffset = CGSizeMake(0, 10)
}

我认为此代码之前的工作正常。 PresentationLayermodalLayer之间的切换非常完美。

但是,此处shadowOffset会立即设置为CGSizeMake(0, 10)

当我给动画一个fromValue

anime.fromValue = NSValue(CGSize: CGSizeMake(0, 0))

动画有效。

该文件提到了前一种情况:

  

toValue是非零的。在目标图层的表示层中的keyPath的当前值和toValue之间进行插值。

那么为什么我不能在不设置fromValue的情况下获得动画准确?

ps:我正在使用XCode6.3

1 个答案:

答案 0 :(得分:0)

你需要一个fromValue,因为动画并不知道它应该动画的内容。设置toValue和动画会跳过内容,因为没有起始值,它不知道如何插值。

您可以将fromValue设置为当前值,例如anime.fromValue = textField.layer.shadowOffset