添加自定义组件
自定义前景视图
如果您想要在视图的顶层添加自定义组件,例如在视频视图显示时展示用户头像、添加用户等级的图标等,您可以使用 ZegoUIKitPrebuiltCallVCDelegate.getForegroundView
协议。
getForegroundView
要求您返回一个自定义视图,该视图将放置在视图的顶部。
以下为适用于基本通话(不包含呼叫邀请的通话)的参考代码:
Untitled
class ViewController: UIViewController {
let selfUserID: String = "userID"
let selfUserName: String = "userName"
let yourAppID: UInt32 = YourAppID
let yourAppSign: String = YourAppSign
let callID: String = "testCallID"
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func makeNewCall(_ sender: Any) {
// 在这里修改您的自定义配置。
let config: ZegoUIKitPrebuiltCallConfig = ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall()
config.turnOnCameraWhenJoining = false;
config.audioVideoViewConfig.showCameraStateOnView = false;
config.bottomMenuBarConfig.buttons = [.toggleMicrophoneButton,.hangUpButton,.swtichAudioOutputButton]
let callVC = ZegoUIKitPrebuiltCallVC.init(yourAppID, appSign: yourAppSign, userID: selfUserID, userName: selfUserName ?? "", callID: callID, config: config)
callVC.delegate = self
callVC.modalPresentationStyle = .fullScreen
self.present(callVC, animated: true, completion: nil)
}
}
extension ViewController: ZegoUIKitPrebuiltCallVCDelegate {
func getForegroundView(_ userInfo: ZegoUIKitUser?) -> UIView? {
return YourCustomView()
}
}
1
自定义纯语音通话场景的视图
如果您需要在纯语音模式下自定义用户的通话界面,例如设置背景图片,您可以使用 ZegoLayoutPictureInPictureConfig
中的 largeViewBackgroundImage
、smallViewBackgroundImage
、largeViewBackgroundColor
、smallViewBackgroundColor
。
Note
这些配置仅在用户关闭摄像头时有效(当摄像头打开时,摄像头画面将自动显示)。
参考代码如下所示:
基本通话
携带邀请的通话
class ViewController: UIViewController {
let selfUserID: String = "userID"
let selfUserName: String = "userName"
let yourAppID: UInt32 = YourAppID
let yourAppSign: String = YourAppSign
let callID: String = "testCallID"
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func makeNewCall(_ sender: Any) {
// 在这里修改您的自定义配置。
let config: ZegoUIKitPrebuiltCallConfig = ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall()
let layout: ZegoLayout = ZegoLayout()
layout.mode = .pictureInPicture
let pipConfig: ZegoLayoutPictureInPictureConfig = ZegoLayoutPictureInPictureConfig()
pipConfig.largeViewBackgroundColor = UIColor.darkGray
pipConfig.smallViewBackgroundColor = UIColor.lightGray
layout.config = pipConfig
config.layout = layout
let callVC = ZegoUIKitPrebuiltCallVC.init(yourAppID, appSign: yourAppSign, userID: selfUserID, userName: selfUserName ?? "", callID: callID, config: config)
callVC.modalPresentationStyle = .fullScreen
self.present(callVC, animated: true, completion: nil)
}
}
1
class CallInvitationVC: UIViewController {
let appID: UInt32 = yourAppID
let appSign: String = "yourAppSign"
let userID: String = "userID"
let userName: String = "userName"
let voiceCallButton: ZegoSendCallInvitationButton = ZegoSendCallInvitationButton(ZegoInvitationType.voiceCall.rawValue)
let videoCallButton: ZegoSendCallInvitationButton = ZegoSendCallInvitationButton(ZegoInvitationType.videoCall.rawValue)
override func viewDidLoad() {
super.viewDidLoad()
let config = ZegoUIKitPrebuiltCallInvitationConfig([ZegoUIKitSignalingPlugin()], notifyWhenAppRunningInBackgroundOrQuit: false, isSandboxEnvironment: false)
ZegoUIKitPrebuiltCallInvitationService.shared.initWithAppID(self.appID, appSign: self.appSign, userID: self.userID, userName: self.userName, config: config)
ZegoUIKitPrebuiltCallInvitationService.shared.delegate = self
}
}
extension CallInvitationVC: ZegoUIKitPrebuiltCallInvitationServiceDelegate {
//MARK: -ZegoUIKitPrebuiltCallInvitationServiceDelegate
func requireConfig(_ data: ZegoCallInvitationData) -> ZegoUIKitPrebuiltCallConfig {
var config = ZegoUIKitPrebuiltCallConfig.groupVoiceCall()
if data.type == .voiceCall {
if data.invitees?.count ?? 0 > 1 {
config = ZegoUIKitPrebuiltCallConfig.groupVoiceCall()
} else {
config = ZegoUIKitPrebuiltCallConfig.oneOnOneVoiceCall()
}
} else {
if data.invitees?.count ?? 0 > 1 {
config = ZegoUIKitPrebuiltCallConfig.groupVideoCall()
} else {
config = ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall()
}
}
// 在这里修改您的自定义配置。
if data.invitees?.count ?? 0 <= 1 {
let layout: ZegoLayout = ZegoLayout()
layout.mode = .pictureInPicture
let pipConfig: ZegoLayoutPictureInPictureConfig = ZegoLayoutPictureInPictureConfig()
pipConfig.largeViewBackgroundColor = UIColor.darkGray
pipConfig.smallViewBackgroundColor = UIColor.lightGray
layout.config = pipConfig
config.layout = layout
}
return config
}
}
1