CAKeyframeAnimation完成后如何指定选择器

ios

1个回答

写回答

芝士甜甜

2025-07-09 15:23

+ 关注

Swift
Swift

一篇关于CAKeyframeAnimation完成后如何指定选择器的文章,并添加案例代码。

CAKeyframeAnimation完成后如何指定选择器

CAKeyframeAnimation是Core Animation框架中的一个类,用于在指定的时间范围内根据关键帧进行动画的插值计算。在动画完成后,我们可以通过指定选择器来执行一些特定的操作。

在使用CAKeyframeAnimation时,我们可以通过设置delegate属性来指定一个对象作为动画的代理。代理对象可以实现CAAnimationDelegate协议中的方法,其中包括animationDidStop(_:finished:)方法,该方法会在动画完成后被调用。

下面是一个使用CAKeyframeAnimation完成后指定选择器的示例代码:

Swift

import UIKit

class 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完成后如何指定选择器的文章及示例代码。通过设置代理对象并实现相应的方法,我们可以在动画完成后执行一些特定的操作,从而实现更丰富的动画效果。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号