55// Created by krabyu on 2023/10/19.
66//
77
8+ import AtomicX
89import AtomicXCore
910import Combine
1011import Foundation
1112import RTCCommon
1213import RTCRoomEngine
1314import TUICore
14- import AtomicX
1515
1616public protocol RotateScreenDelegate : AnyObject {
1717 func rotateScreen( isPortrait: Bool )
@@ -59,15 +59,15 @@ class AudienceView: RTCBaseView {
5959 return button
6060 } ( )
6161
62+ lazy var blurView = UIVisualEffectView ( effect: UIBlurEffect ( style: . light) )
63+
6264 lazy var coverBgView : UIImageView = {
6365 let imageView = UIImageView ( frame: . zero)
64- let effect = UIBlurEffect ( style: . light)
65- let blurView = UIVisualEffectView ( effect: effect)
66+ blurView. isHidden = true
6667 imageView. addSubview ( blurView)
6768 blurView. snp. makeConstraints { make in
6869 make. edges. equalToSuperview ( )
6970 }
70- imageView. image = internalImage ( " live_edit_info_default_cover_image " )
7171 return imageView
7272 } ( )
7373
@@ -91,6 +91,7 @@ class AudienceView: RTCBaseView {
9191 super. init ( frame: . zero)
9292 videoView. setLiveID ( roomId)
9393 videoView. videoViewDelegate = self
94+ backgroundColor = . black
9495 }
9596
9697 @available ( * , unavailable)
@@ -117,9 +118,7 @@ class AudienceView: RTCBaseView {
117118 coverBgView. snp. remakeConstraints { make in
118119 make. edges. equalToSuperview ( )
119120 }
120- videoView. snp. remakeConstraints { make in
121- make. edges. equalToSuperview ( )
122- }
121+ updateCoreViewLayout ( )
123122 livingView. snp. remakeConstraints { make in
124123 make. edges. equalToSuperview ( )
125124 }
@@ -185,12 +184,27 @@ class AudienceView: RTCBaseView {
185184
186185 func relayoutCoreView( ) {
187186 addSubview ( videoView)
188- videoView. snp. makeConstraints { make in
189- make. edges. equalToSuperview ( )
190- }
187+ updateCoreViewLayout ( )
191188 sendSubviewToBack ( videoView)
192189 sendSubviewToBack ( coverBgView)
193190 }
191+
192+ private func updateCoreViewLayout( ) {
193+ guard !manager. liveListState. currentLive. isEmpty,
194+ manager. liveListState. currentLive. seatTemplate == . videoLandscape4Seats,
195+ WindowUtils . isPortrait
196+ else {
197+ videoView. snp. remakeConstraints { make in
198+ make. edges. equalToSuperview ( )
199+ }
200+ return
201+ }
202+ videoView. snp. remakeConstraints { make in
203+ make. leading. trailing. equalToSuperview ( )
204+ make. top. equalToSuperview ( ) . offset ( 150 )
205+ make. height. equalTo ( Screen_Width * 720 / 1280 )
206+ }
207+ }
194208}
195209
196210extension AudienceView {
@@ -212,10 +226,15 @@ extension AudienceView {
212226 guard let self = self else { return }
213227 if currentLive. isEmpty {
214228 routeToAudienceView ( )
215- } else if !currentLive. backgroundURL. isEmpty {
229+ return
230+ }
231+ updateCoreViewLayout ( )
232+ if !currentLive. backgroundURL. isEmpty {
216233 coverBgView. kf. setImage ( with: URL ( string: currentLive. backgroundURL) , placeholder: internalImage ( " live_edit_info_default_cover_image " ) )
234+ blurView. isHidden = false
217235 } else if !currentLive. coverURL. isEmpty {
218236 coverBgView. kf. setImage ( with: URL ( string: currentLive. coverURL) , placeholder: internalImage ( " live_edit_info_default_cover_image " ) )
237+ blurView. isHidden = false
219238 }
220239 }
221240 . store ( in: & cancellableSet)
@@ -350,7 +369,7 @@ extension AudienceView {
350369 }
351370
352371 private func onKickedByAdmin( ) {
353- manager. toastSubject. send ( ( . kickedOutText, . info) )
372+ manager. toastSubject. send ( ( . kickedOutText, . info) )
354373 isUserInteractionEnabled = false
355374 DispatchQueue . main. asyncAfter ( deadline: . now( ) + 1 ) { [ weak self] in
356375 guard let self = self else { return }
0 commit comments