跳到主要内容

Apple 运行时(Apple)

注意(Note):Apple 包内已提供新版运行时(实验性),可能包含破坏性变更。Legacy 运行时仍在维护,但建议新项目优先评估新版 API,并逐步迁移存量项目。

概览(Overview)

Rive Apple Runtime 开源,代码仓库:

支持平台(官方当前说明):

  • iOS 14.0+
  • visionOS 1.0+
  • tvOS 16.0+
  • macOS 13.1+
  • Mac Catalyst 14.0+

新版运行时是 Swift First 设计,基于 Swift Concurrency,改进了多线程能力。

新版入口核心是 Rive 类型(用于定义 file、artboard、state machine、fit、背景色等配置),并通过 RiveUIView(UIKit/AppKit)或 SwiftUI 的 representable 类型接入视图。

快速开始(新版 API)

1) 安装 Runtime(推荐 SPM)

CocoaPods 已进入维护模式,建议优先 Swift Package Manager。

Package.swift 示例:

dependencies: [
.package(url: "https://github.com/rive-app/rive-ios", from: "6.13.0")
]

Target 依赖:

targets: [
.target(
name: "MyApp",
dependencies: [
.product(name: "RiveRuntime", package: "rive-ios")
]
)
]

2) 导入模块

新版类型位于 RiveExperimental SPI 下:

@_spi(RiveExperimental) import RiveRuntime

3) 创建 Worker

Worker 负责并发处理(包含后台线程与全局资源管理):

// async context
let worker = try await Worker()
// sync context
let worker = try Worker()

4) 加载 File

File 需要 source + worker:

let worker = try await Worker()
let file = File(source: .local("my_file", Bundle.main), worker: worker)

也支持 .url(...) / .data(...)

5) 添加 View

let rive = try await Rive(file: file)
let riveView = RiveUIView(rive: rive)
view.addSubview(riveView)

SwiftUI 可用 RiveUIViewRepresentable(rive)AsyncRiveUIViewRepresentable

6) 数据绑定(Data Binding)

默认情况下,Rive(file: ...) 会尝试自动绑定默认 view model instance。

你也可以显式选择:

  • dataBind: .auto
  • dataBind: .instance(...)
  • dataBind: .none

详情建议同步参考:

Legacy API(旧版)

旧版核心是 RiveViewModel,可用于 SwiftUI 与 UIKit:

import RiveRuntime

RiveViewModel(fileName: "cool_rive_animation").view()

UIKit 下可 createRiveView() 后 addSubview,或在 Storyboard 中绑定 RiveView

常用控制

播放 / 暂停

新版(UIKit)示例:

let rive = try await Rive(...)
let riveView = RiveUIView(rive: rive)
riveView.isPaused = true // false 为恢复

旧版示例:

let viewModel = RiveViewModel(fileName: "...")
viewModel.pause() // or play()

帧率(Frame Rate)

新版:

riveView.frameRate = .fps(30)
// or
riveView.frameRate = .range(minimum: 30, maximum: 60)
// or
riveView.frameRate = .default

旧版:

viewModel.setPreferredFramesPerSecond(preferredFramesPerSecond: 30)

线程模型(Threading)

新版通过 Worker 支持多线程;但 Rive 对象 API 仍要求主线程(@MainActor)调用。

旧版基本是主线程单线程模型。

日志(Logging)

  • 新版:日志能力尚在完善中
  • 旧版:可通过 RiveLogger.isEnabled = true 打开

示例项目

git clone https://github.com/rive-app/rive-ios

在 Xcode 打开 Example-iOS,选择 Preview (iOS)Preview (macOS) scheme。

资源(Resources)