CallCoreView
简介
CallCoreView 是通话界面的主要容器,提供以下核心能力:多布局切换: 支持单人悬浮、多人宫格、画中画三种布局模式切换。
呼叫等待交互: 支持自定义呼叫接通前的等待动画。
状态可视化: 支持自定义不同音量等级和网络质量状态的图标。
用户个性化: 支持通过 User ID 映射设置参与者头像。
说明:
该视图组件需要配合 CallStore 使用,以正确展示通话画面并接收通话状态更新。
功能特性
多布局切换:支持单人悬浮、多人宫格、画中画三种布局模式切换。
呼叫等待交互:支持自定义呼叫接通前的等待动画。
状态可视化:支持自定义不同音量等级和网络质量状态的图标。
用户个性化:支持通过 User ID 映射设置参与者头像。
API 列表
函数名 | 描述 |
默认占位头像。 | |
呼叫等待动画。 | |
音量状态图标集合。 | |
网络信号图标集合。 | |
多布局切换。 |
静态属性
defaultAvatarImage
默认占位头像。
waitingAnimationImage
呼叫等待动画。
volumeImages
音量状态图标集合。
networkQualityImages
网络信号图标集合。
配置方法
setLayoutTemplate(_:)
多布局切换。
数据结构
CallLayoutTemplate
通话布局模式枚举,用于定义通话画面的展示形态。
枚举值 | 说明 |
float | 单人通话布局。 |
grid | 多人通话布局。 |
pip | 画中画布局。 |
VolumeLevel
音量等级枚举,用于标识参与者当前的音量强度。
枚举值 | 值 | 说明 |
mute | 0 | 静音。 |
low | 1 | 低音量。 |
medium | 2 | 中音量。 |
high | 3 | 高音量。 |
peak | 4 | 峰值音量。 |
CallCoreController
用于管理 CallCoreView 布局和状态的控制器。
属性 | 类型 | 说明 |
_currentTemplate | | 当前布局模板通知器。 |
_zoomEnabled | | 视频缩放手势启用状态。 |
currentLayoutTemplate | 当前布局模板。可通过 setLayoutTemplate 修改。 | |
waitingAnimationSource | ResourceStr | 呼叫等待动画资源。接受 $rawfile(...)、$r(...)、网络 URL、本地文件路径 (file:///...) 或 Base64 数据 URI。 |
volumeLevelIconSources | 音量等级图标资源映射。值接受 $rawfile(...)、$r(...)、网络 URL、本地文件路径 (file:///...) 或 Base64 数据 URI。 | |
networkQualityIconSources | Map<NetworkQuality, ResourceStr> | 网络质量图标资源映射。值接受 $rawfile(...)、$r(...)、网络 URL、本地文件路径 (file:///...) 或 Base64 数据 URI。 |
defaultAvatarSource | ResourceStr | 默认占位头像资源。接受 $rawfile(...)、$r(...)、网络 URL、本地文件路径 (file:///...) 或 Base64 数据 URI。 |
使用示例
import AtomicXCore// 创建通话视图let callCoreView = CallCoreView(frame: view.bounds)view.addSubview(callCoreView)// 设置布局模式callCoreView.setLayoutTemplate(.grid)// 设置等待动画callCoreView.setWaitingAnimation(path: "waiting_animation.json")// 设置音量图标callCoreView.setVolumeLevelIcons(icons: [.mute: "volume_mute",.low: "volume_low",.medium: "volume_medium",.high: "volume_high",.peak: "volume_peak"])// 设置网络质量图标callCoreView.setNetworkQualityIcons(icons: [.unknown: "network_unknown",.excellent: "network_excellent",.good: "network_good",.poor: "network_poor",.bad: "network_bad",.veryBad: "network_very_bad",.down: "network_down"])// 设置参与者头像callCoreView.setParticipantAvatars(avatars: ["user_123": "avatar_user_123","user_456": "avatar_user_456"])
