You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何让CATransaction实现无限重复或指定次数重复?

嘿,这个问题我太熟了!其实CATransaction主要是用来管动画的分组、统一时长、完成回调这些全局配置的,而重复播放的逻辑是交给具体的CAAnimation对象来控制的,和CATransaction本身关系不大~我给你分两种情况讲明白:

一、实现无限重复动画

核心是给你的CAAnimation实例(比如CABasicAnimation、CAKeyframeAnimation)设置repeatCount属性为无限值,再结合CATransaction的全局配置即可:

Swift 示例代码

func animate() {
    CATransaction.begin()
    
    // 可选:设置全局动画时长、完成回调等CATransaction属性
    CATransaction.setAnimationDuration(0.6)
    CATransaction.setCompletionBlock {
        print("如果是无限重复,这个回调不会触发哦~")
    }
    
    // 创建具体的动画(这里以透明度渐变为例)
    let fadeAnim = CABasicAnimation(keyPath: "opacity")
    fadeAnim.fromValue = 1.0
    fadeAnim.toValue = 0.3
    // 设置无限重复
    fadeAnim.repeatCount = Float.infinity
    // 可选:开启自动反向(比如从1→0.3再回到1,形成循环)
    fadeAnim.autoreverses = true
    
    // 将动画添加到目标图层
    yourTargetLayer.add(fadeAnim, forKey: "fadeAnimation")
    
    CATransaction.commit()
}

Objective-C 示例代码

- (void)animate {
    [CATransaction begin];
    
    // 可选:设置全局动画时长、完成回调
    [CATransaction setAnimationDuration:0.6];
    [CATransaction setCompletionBlock:^{
        NSLog(@"无限重复动画的话,这个回调不会执行哦~");
    }];
    
    // 创建透明度渐变动画
    CABasicAnimation *fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
    fadeAnim.fromValue = @1.0;
    fadeAnim.toValue = @0.3;
    // 设置无限重复
    fadeAnim.repeatCount = HUGE_VALF;
    // 可选:开启自动反向
    fadeAnim.autoreverses = YES;
    
    // 添加到目标图层
    [self.yourTargetLayer addAnimation:fadeAnim forKey:@"fadeAnimation"];
    
    [CATransaction commit];
}

二、实现指定次数的重复动画

只需要把repeatCount设置为具体的数值即可,比如要重复3次:

Swift 关键代码

// 重复3次(如果开启autoreverses,一次"来回"算一次重复)
fadeAnim.repeatCount = 3

Objective-C 关键代码

// 重复3次
fadeAnim.repeatCount = 3;

⚠️ 小提醒:

  • 如果开启了autoreverses = true,一次重复会包含“正向动画+反向动画”的完整循环;如果关闭,就是单纯重复正向动画。
  • 要是你需要在指定次数的动画全部完成后执行逻辑,可以把代码写在CATransaction的completionBlock里,这个回调会在所有动画结束后触发。
  • 如果之前给图层添加过同名的动画,记得先调用yourLayer.removeAnimation(forKey: "fadeAnimation")移除旧动画,避免冲突。

内容的提问来源于stack exchange,提问作者w.y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:24:37