直播观看 | 互动连麦 | 直播信息 | 直播互动 |
![]() |
![]() | ![]() | ![]() |
YourAudienceViewController 初始化添加 AudienceView观众拉流视图:import UIKitimport SnapKitimport TUILiveKit// YourAudienceViewController 代表您观众观看页的视图控制器class YourAudienceViewController: UIViewController {// 1. 声明 audienceView 作为成员变量private let audienceView: AudienceView// 2. 新增便利构造函数:// - roomId: 直播房间idpublic init(roomId: String) {// 3. 初始化 AudienceView 组件self.audienceView = AudienceView(roomId: roomId)super.init(nibName: nil, bundle: nil)}@available(*, unavailable)required init?(coder: NSCoder) {fatalError("init(coder:) has not been implemented")}public override func viewDidLoad() {super.viewDidLoad()// 4. 将 audienceView 添加到视图上view.addSubview(audienceView)audienceView.snp.makeConstraints { make inmake.edges.equalToSuperview()}}}
AudienceView 还提供了以下三个可选扩展点,帮助您接入自定义的直播列表数据源、监听观众页生命周期事件、以及处理屏幕旋转:扩展点 | 类型 | 说明 |
delegate | AudienceViewDelegate | 监听观众页内的核心事件,包括直播视图的创建/展示/隐藏、点击悬浮窗、直播结束等回调。 |
dataSource | AudienceViewDataSource | 自定义直播列表的拉取逻辑。若不设置, AudienceView 默认从 TUILiveKit 内置的直播列表拉取数据;设置后,观众滑动切换直播间时将改为调用您自己的直播间列表接口。 |
rotateScreenDelegate | RotateScreenDelegate | 监听观众页横竖屏切换事件,用于同步您业务侧的 UI 布局。 |
import UIKitimport SnapKitimport TUILiveKitimport AtomicXCoreclass YourAudienceViewController: UIViewController {private let audienceView: AudienceViewpublic init(roomId: String) {self.audienceView = AudienceView(roomId: roomId)super.init(nibName: nil, bundle: nil)// 设置回调与数据源audienceView.delegate = selfaudienceView.dataSource = selfaudienceView.rotateScreenDelegate = self}@available(*, unavailable)required init?(coder: NSCoder) {fatalError("init(coder:) has not been implemented")}public override func viewDidLoad() {super.viewDidLoad()view.addSubview(audienceView)audienceView.snp.makeConstraints { make inmake.edges.equalToSuperview()}}}// MARK: - AudienceViewDelegateextension YourAudienceViewController: AudienceViewDelegate {// 创建了某个直播间对应的播放视图 liveView 时回调,可在此处叠加自定义 UIfunc audienceView(_ audienceView: AudienceView, onCreateLiveView liveView: AudienceLiveView, for liveInfo: LiveInfo) {}// 观众滑动切换到某个直播间,其播放视图 liveView 已展示到屏幕上func audienceView(_ audienceView: AudienceView, liveViewDidAppear liveView: AudienceLiveView, for liveInfo: LiveInfo) {}// 观众已滑离某个直播间,其播放视图 liveView 已从屏幕上移除func audienceView(_ audienceView: AudienceView, liveViewDidDisappear liveView: AudienceLiveView, for liveInfo: LiveInfo) {}// 用户点击了悬浮窗func onClickFloatWindow() {FloatWindow.shared.showFloatWindow(controller: self, provider: audienceView)}// 直播已结束(主播下播/房间被解散等)func onLiveEnded(roomId: String, ownerName: String, ownerAvatarUrl: String) {// 展示直播结束的结算页(含主播头像/昵称、"直播已结束"提示等)let endView = AudienceEndStatisticsView(roomId: roomId, avatarUrl: ownerAvatarUrl, userName: ownerName)endView.delegate = selfview.addSubview(endView)endView.snp.makeConstraints { make inmake.edges.equalToSuperview()}}}// MARK: - RotateScreenDelegateextension YourAudienceViewController: RotateScreenDelegate {// isPortrait: true 表示当前为竖屏,false 表示当前为横屏func rotateScreen(isPortrait: Bool) {}}
// 1. 实例化您的观众观看视图控制器let audienceVC =YourAudienceViewController(roomId: "您的直播房间 id")audienceVC.modalPresentationStyle = .fullScreen// 2. 跳转到您的观众观看视图控制器present(audienceVC, animated: false)
AudienceView 中修改 UI 样式,添加您的业务组件。AudienceView 中修改视频位上的名称、头像挂件等 UI。
TUILiveKit.xcassets 管理 UI 所需的图片资源,您可以借助 Xcode 图形化工具快速修改自定义界面所需的图标。

文档反馈