【问题标题】:CAAnimation do not execute without fromValue?CAAnimation 没有 fromValue 就不会执行?
【发布时间】:2015-05-01 02:21:55
【问题描述】:

这是示例代码:

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

【问题讨论】:

    标签: ios caanimation


    【解决方案1】:

    您需要一个 fromValue,因为动画不知道它应该从什么开始制作动画。设置 toValue 和动画会跳转内容,因为没有起始值,它不知道如何插入值。

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

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多