Core Animation 是 Apple 提供的一套高性能、硬件加速的动画绘图框架,广泛用于 macOS、iOS、watchOS 和 tvOS,为界面元素添加流畅、复杂且高效的动画效果,几乎无需手动管理帧绘制。
Core Animation是什么?
Core Animation,来自QuartzCore.framework框架。
主要类为:CALayer、CABasicAnimation、CAAnimationGroup、CATransaction 等。
使用平台:macOS、iOS、iPadOS、watchOS、tvOS、VersionOS等平台。
支持硬件加速(OpenGL / Metal 支持),可以在独立线程渲染,不阻塞主线程 UI 操作。
实现功能
1、平移动画:移动视图位置。
2、缩放动画:实现放大/缩小效果。
3、旋转动画:360° 旋转。
4、透明度动画:渐显渐隐。
5、圆角、阴影、边框动画:动态改变外观。
6、关键帧动画:多阶段复杂动画路径。
7、动画组:多种动画同时播放。
8、3D 变换:创建立体、翻转效果。
核心概念:CALayer
在 Core Animation 中,动画操作是作用在 Layer(层)上,而不是直接操作 UIView 或 NSView。
每个 UIView(iOS)或 NSView(macOS)都有一个 CALayer。
CALayer 是 Core Animation 的最基本单位,它掌管显示内容和动画行为。
所有动画最终作用在 CALayer 上。
let view = NSView(frame: NSRect(x: 0, y: 0, width: 200, height: 100))
view.wantsLayer = true
view.layer?.backgroundColor = NSColor.systemBlue.cgColor
view.layer?.cornerRadius = 10
view.layer?.borderWidth = 2
view.layer?.borderColor = NSColor.white.cgColor
view.layer?.shadowColor = NSColor.black.cgColor
view.layer?.shadowOpacity = 0.5
view.layer?.shadowOffset = CGSize(width: 4, height: -4)

使用场景
1、基础动画(移动)
let layer = someView.layer!
let animation = CABasicAnimation(keyPath: "position.x")
animation.fromValue = layer.position.x
animation.toValue = layer.position.x + 100
animation.duration = 0.5
layer.add(animation, forKey: "moveX")
这会让 someView 水平移动 100 个点,0.5 秒完成。
2、在macOS中使用Core Animation
let layer = myView.layer!
layer.backgroundColor = NSColor.red.cgColor
let fade = CABasicAnimation(keyPath: "opacity")
fade.fromValue = 0.0
fade.toValue = 1.0
fade.duration = 1.0
layer.add(fade, forKey: "fadeIn")
macOS 中默认 NSView 的 wantsLayer 是 false,需要启用:
myView.wantsLayer = true
常用类
1、CALayer:所有可动画属性的载体,几乎是基础。
2、CABasicAnimation:基本插值动画(from → to)。
3、CAKeyframeAnimation:多阶段关键帧动画。
4、CAAnimationGroup:将多个动画组合一起执行。
5、CATransaction:控制多个动画的时间、统一提交。
6、CAShapeLayer:可用于绘制路径、SVG 动画。
7、CAGradientLayer:渐变背景动画。
8、CAEmitterLayer:粒子系统(下雪、烟花)。
9、CATransform3D:3D 仿射变换。
Core Animation特性
1、离屏渲染:动画不会阻塞主线程 UI。
2、GPU 加速:多数属性由 GPU 渲染,性能好。
3、隐式动画:改变 Layer 属性自动带动画(在事务中)。
4、显式动画:使用 CABasicAnimation 等添加。
5、可组合:多种动画可叠加、组合、嵌套。
6、Swift / ObjC 皆可用:高度兼容性。
总结
Core Animation支持二维动画、三维动画、粒子、路径等动画效果。
通过GPU加速、主线程不卡顿,支持动画组、事务控制、回调。
与SwiftUI View、UIView、NSView配合使用,快速实现复杂视觉效果,提升用户体验。
相关文章
Apple渲染图像、动画的CALayer:https://fangjunyu.com/2025/07/02/apple%e6%b8%b2%e6%9f%93%e5%9b%be%e5%83%8f%e3%80%81%e5%8a%a8%e7%94%bb%e7%9a%84calayer/