| | |
| | | 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() |
| | |
| | | } |
| | | }) |
| | | .border(Color.red) |
| | | .clipped() |
| | | .onDisappear { |
| | | print("onDisappear 视图消失了!") |
| | | |
| | |
| | | |
| | | 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)") |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | 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) |
| | | } |
| | | } |
| | | |