You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PatientApp-KKUMC/ios/Runner/OpenTok/OpenTokLocalVideoFactory.swift

92 lines
2.2 KiB
Swift

//
// OpenTokLocalVideoFactory.swift
// Runner
//
// Created by Zohaib Iqbal Kambrani on 20/10/2021.
//
import Foundation
class OpenTokLocalVideoFactory: NSObject, FlutterPlatformViewFactory {
static var view: LocalVideoPlatformView?
static var viewToAddPub: UIView?
static func getViewInstance(
frame: CGRect,
viewId: Int64,
args: Any?,
messenger: FlutterBinaryMessenger?
) -> LocalVideoPlatformView{
if(view == nil) {
view = LocalVideoPlatformView()
if viewToAddPub != nil {
view?.addPublisherView(viewToAddPub!)
}
}
return view!
}
private var messenger: FlutterBinaryMessenger
init(messenger: FlutterBinaryMessenger) {
self.messenger = messenger
super.init()
}
func create(
withFrame frame: CGRect,
viewIdentifier viewId: Int64,
arguments args: Any?
) -> FlutterPlatformView {
return OpenTokLocalVideoFactory.getViewInstance(
frame: frame,
viewId: viewId,
args: args,
messenger: messenger)
}
}
class LocalVideoPlatformView: NSObject, FlutterPlatformView {
private let videoContainer: LocalVideoContainer
override init() {
videoContainer = LocalVideoContainer()
super.init()
}
public func addPublisherView(_ view: UIView) {
videoContainer.addPublisherView(view)
}
func view() -> UIView {
return videoContainer
}
}
final class LocalVideoContainer: UIView {
private let publisherContainer = UIView()
init() {
super.init(frame: .zero)
addSubview(publisherContainer)
}
public func addPublisherView(_ view: UIView) {
publisherContainer.addSubview(view)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
let width = frame.width
let height = frame.height
publisherContainer.frame = CGRect(x: 0, y: 0, width: width, height: height)
}
}