这是示例代码:
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)
}
我认为此代码之前的工作正常。 PresentationLayer
和modalLayer
之间的切换非常完美。
但是,此处shadowOffset
会立即设置为CGSizeMake(0, 10)
。
当我给动画一个fromValue
anime.fromValue = NSValue(CGSize: CGSizeMake(0, 0))
动画有效。
该文件提到了前一种情况:
toValue是非零的。在目标图层的表示层中的keyPath的当前值和toValue之间进行插值。
那么为什么我不能在不设置fromValue
的情况下获得动画准确?
ps:我正在使用XCode6.3
答案 0 :(得分:0)
你需要一个fromValue,因为动画并不知道它应该动画的内容。设置toValue和动画会跳过内容,因为没有起始值,它不知道如何插值。
您可以将fromValue设置为当前值,例如anime.fromValue = textField.layer.shadowOffset
。