79 lines
2.5 KiB
Swift
79 lines
2.5 KiB
Swift
import AtomicXCore
|
|
import DCloudUTSFoundation
|
|
import RTCRoomEngine
|
|
import UIKit
|
|
|
|
public class LiveRenderView: UIView {
|
|
private let cornerRadius: CGFloat = 18 // 圆角半径
|
|
private var nativeViewType = CoreViewType.playView
|
|
|
|
// MARK: - 初始化
|
|
override init(frame: CGRect = .zero) {
|
|
super.init(frame: frame)
|
|
commonInit()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
super.init(coder: coder)
|
|
commonInit()
|
|
}
|
|
|
|
private func commonInit() {
|
|
self.layer.cornerRadius = cornerRadius
|
|
self.layer.masksToBounds = true
|
|
self.layer.shouldRasterize = true
|
|
self.layer.rasterizationScale = UIScreen.main.scale
|
|
}
|
|
|
|
// 保证圆角在布局变化时始终生效
|
|
public override func layoutSubviews() {
|
|
super.layoutSubviews()
|
|
self.layer.cornerRadius = cornerRadius
|
|
self.layer.masksToBounds = true
|
|
}
|
|
|
|
public func updateViewType(_ viewType: Any) {
|
|
guard viewType != nil else {
|
|
return
|
|
}
|
|
guard viewType is String else {
|
|
return
|
|
}
|
|
if let viewTypeStr = viewType as? String {
|
|
if viewTypeStr == "PUSH_VIEW" {
|
|
nativeViewType = CoreViewType.pushView
|
|
}
|
|
}
|
|
}
|
|
|
|
// MARK: - 渲染视图更新
|
|
public func updateRenderView(_ liveID: Any) {
|
|
console.log("iOS-LiveRenderView, updateRenderView, liveID: ", liveID)
|
|
guard liveID != nil else {
|
|
console.log("iOS-LiveRenderView, updateRenderView: liveID is empty")
|
|
return
|
|
}
|
|
guard liveID is String else {
|
|
console.log("iOS-LiveRenderView, updateRenderView: liveID is not String")
|
|
return
|
|
}
|
|
|
|
subviews.forEach { $0.removeFromSuperview() }
|
|
|
|
console.log("iOS-LiveRenderView, updateRenderView, viewType: ", self.nativeViewType)
|
|
if let liveIDStr = liveID as? String , !liveIDStr.isEmpty {
|
|
let renderView = LiveCoreView(viewType: self.nativeViewType, frame : .zero)
|
|
renderView.setLiveID(liveIDStr)
|
|
renderView.translatesAutoresizingMaskIntoConstraints = false
|
|
addSubview(renderView)
|
|
|
|
NSLayoutConstraint.activate([
|
|
renderView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
|
renderView.trailingAnchor.constraint(equalTo: trailingAnchor),
|
|
renderView.topAnchor.constraint(equalTo: topAnchor),
|
|
renderView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
])
|
|
}
|
|
}
|
|
}
|