【问题标题】:animationDidStop not being called?animationDidStop 没有被调用?
【发布时间】:2017-05-28 16:47:00
【问题描述】:

我不确定出了什么问题,我确保将委托设置为 self,但它仍然没有被调用。代码如下:

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    //animate form
    let flyRight = CABasicAnimation(keyPath: "position.x")
    flyRight.fromValue = -view.bounds.size.width/2
    flyRight.toValue = view.bounds.size.width/2
    flyRight.duration = 0.5
    heading.layer.add(flyRight, forKey: nil)

    flyRight.isRemovedOnCompletion = false
    flyRight.fillMode = kCAFillModeForwards

    flyRight.delegate = self as? CAAnimationDelegate
    flyRight.setValue("form", forKey: "name")
    flyRight.setValue(username.layer, forKey: "layer")
}

这里是animationDidStop

  func animationDidStop(_ anim: CAAnimation!, finished flag: Bool) {
    let nameValue = anim.value(forKey: "name") as? String
    if let name = nameValue {
      if name == "form" {
        let layer: CALayer = anim.value(forKey: "layer")! as! CALayer
        layer.position.x = view.bounds.width/2
        anim.setValue(nil, forKey: "layer")
      }
    }
  }

【问题讨论】:

  • 在您的班级声明中,我认为您缺少:class MyViewController: UIViewController, CAAnimationDelegate { // ... }
  • 就是这样,谢谢!

标签: ios swift core-animation calayer


【解决方案1】:

在你的类声明中你缺少符合协议

class MyViewController: UIViewController, CAAnimationDelegate {
// ... 
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多