【发布时间】: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