Apple动画框架Core Animation
Apple动画框架Core Animation

Apple动画框架Core Animation

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/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注