From 2b51baa1981fb445b938e64bdce539e58fe70264 Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sat, 26 Jul 2025 13:17:14 +0000
Subject: [PATCH] 小窗缩放, 相机转小窗显示 小窗旋转,相机画面旋转 关闭按钮优化

---
 LiveProject/activity/stream/LiveActivity.swift |   47 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/LiveProject/activity/stream/LiveActivity.swift b/LiveProject/activity/stream/LiveActivity.swift
index 045e563..d8386f6 100644
--- a/LiveProject/activity/stream/LiveActivity.swift
+++ b/LiveProject/activity/stream/LiveActivity.swift
@@ -34,12 +34,19 @@
             Color.clear
                 .ignoresSafeArea() // 填满全屏
             ZStack{
-                VideoRendererView(pixelBuffer: $mViewModel.pixelBuffer).background(Color.black).frame(width: mainSize.width,height:mainSize.height)
+                let optionalIntBinding = Binding<Int?>(
+                    get: { 0 },
+                    set: { newValue in }
+                )
+                VideoRendererView(pixelBuffer: $mViewModel.pixelBuffer,rotate: optionalIntBinding).background(Color.black).frame(width: mainSize.width,height:mainSize.height)
                     .frame(maxWidth: .infinity,maxHeight: .infinity,alignment: .topTrailing)
-                ForEach(miniWindows, id: \.id) { miniWindow in
-                    NewMiniWindow(miniWindow: miniWindow)
-                }
-            }.border(Color.blue)
+                
+            }.border(Color.blue).clipped()
+                .overlay(
+                    ForEach(miniWindows, id: \.id) { miniWindow in
+                        NewMiniWindow(miniData: miniWindow)
+                    }
+                )
             
             VStack{
                 Spacer()
@@ -64,6 +71,7 @@
                         }
                 })
             .border(Color.red)
+            .clipped()
             .onDisappear {
                 print("onDisappear 视图消失了!")
                 
@@ -157,13 +165,29 @@
                     
                     ForEach(devices, id: \.self) { device in
                         MButton(icon: device.icon,text: device.name){
-                            mViewModel.newWindowAction(device: device){ status in
+                            var miniData = MiniWindowData(streamType: device.type);
+                            switch device.type{
+                            case .CAMERA:
+                                miniData.hasAudio = false;
+                                miniData.hasVideo = true;
+                                break;
+                            case .MICROPHONE:
+                                miniData.hasAudio = true;
+                                miniData.hasVideo = false;
+                                break;
+                            default:
+                                break
+                            }
+                            miniData.mainSize = mainSize
+                            miniData.name = device.name;
+                            mViewModel.newWindowAction(minidata: miniData){ status in
                                 withAnimation{
                                     showDeviceDialog = false;
                                 }
-                                miniWindows.append(MiniWindowData(streamType: device.type))
+                                
+                                miniWindows.append(miniData);
                             }
-                            print("\(device.name) click \(self.miniWindows.count)")
+                            print("\(device.name) \(device.type) click \(self.miniWindows.count)")
                         }
                     }
                 }
@@ -228,12 +252,13 @@
         }
     }
     
-    func NewMiniWindow(miniWindow:MiniWindowData) -> some View{
-        MiniWindow(miniData: miniWindow)
+    func NewMiniWindow(miniData:MiniWindowData) -> some View{
+        return MiniWindow(miniData: miniData)
             .frame(maxWidth: .infinity,maxHeight: .infinity,alignment: .topLeading)
             .onCloseClick {
-                guard let index = miniWindows.firstIndex(where: { $0.id == miniWindow.id }) else { return }
+                guard let index = miniWindows.firstIndex(where: { $0.id == miniData.id }) else { return }
                 miniWindows.remove(at: index)
+                mViewModel.closeWindowAction(miniData: miniData)
             }
     }
     

--
Gitblit v1.9.1