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)
            }
    }