
Swift
一篇关于CAKeyframeAnimation完成后如何指定选择器的文章,并添加案例代码。
CAKeyframeAnimation完成后如何指定选择器CAKeyframeAnimation是Core Animation框架中的一个类,用于在指定的时间范围内根据关键帧进行动画的插值计算。在动画完成后,我们可以通过指定选择器来执行一些特定的操作。在使用CAKeyframeAnimation时,我们可以通过设置delegate属性来指定一个对象作为动画的代理。代理对象可以实现CAAnimationDelegate协议中的方法,其中包括animationDidStop(_:finished:)方法,该方法会在动画完成后被调用。下面是一个使用CAKeyframeAnimation完成后指定选择器的示例代码:Swiftimport UIKitclass ViewController: UIViewController, CAAnimationDelegate { override func viewDidLoad() { super.viewDidLoad() // 创建一个视图 let view = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100)) view.backgroundColor = UIColor.red self.view.addSubview(view) // 创建关键帧动画 let animation = CAKeyframeAnimation(keyPath: "position") animation.duration = 2.0 animation.values = [ NSValue(cgPoint: view.center), NSValue(cgPoint: CGPoint(x: 200, y: 200)), NSValue(cgPoint: CGPoint(x: 300, y: 300)) ] animation.delegate = self // 添加动画到视图的layer view.layer.add(animation, forKey: "positionAnimation") } func animationDidStop(_ anim: CAAnimation, finished flag: Bool) { if flag { print("动画完成") // 在动画完成后执行一些操作 perform(#selector(animationCompleted), with: nil, afterDelay: 0.0) } } @objc func animationCompleted() { // 在这里执行动画完成后的操作,例如更新UI或执行其他逻辑 print("执行动画完成后的操作") }}在上面的示例中,我们创建了一个简单的视图,并应用了一个关键帧动画,该动画将视图的位置从初始位置移动到目标位置。我们通过设置animation.delegate = self将视图控制器指定为动画的代理对象,并实现了animationDidStop(_:finished:)方法。当动画完成后,animationDidStop(_:finished:)方法会被调用,我们可以在该方法中执行一些特定的操作。在示例代码中,我们使用perform(_:with:afterDelay:)方法来调用animationCompleted方法,在该方法中可以执行动画完成后的操作,例如更新UI或执行其他逻辑。通过使用CAKeyframeAnimation的delegate属性,我们可以在动画完成后指定选择器来执行一些特定的操作。这为我们在动画完成后实现一些自定义的逻辑提供了便利。以上是关于CAKeyframeAnimation完成后如何指定选择器的文章及示例代码。通过设置代理对象并实现相应的方法,我们可以在动画完成后执行一些特定的操作,从而实现更丰富的动画效果。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号