From 94be13c5b5c97eeb7896742afb94ca7d6161fa19 Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Wed, 20 Aug 2025 15:36:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E9=80=89=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes .../UserInterfaceState.xcuserstate | Bin 143339 -> 144546 bytes wake/CoreData/.DS_Store | Bin 0 -> 6148 bytes wake/View/Components/Upload/ImagePicker.swift | 58 ++++ .../Upload/MultiImageUploader.swift | 323 +++++++----------- .../Examples/ImageUploadExampleView.swift | 284 --------------- .../MultiImageUploadExampleView.swift | 162 +++++++++ 7 files changed, 340 insertions(+), 487 deletions(-) create mode 100644 wake/CoreData/.DS_Store create mode 100644 wake/View/Components/Upload/ImagePicker.swift delete mode 100644 wake/View/Examples/ImageUploadExampleView.swift create mode 100644 wake/View/Examples/MultiImageUploadExampleView.swift diff --git a/.DS_Store b/.DS_Store index 9d48cbe423166c668a1e9c0ab1d3b2e8f9cd4272..b7b5d2bf795072a87624a0f97816a27a75b862c0 100644 GIT binary patch delta 56 zcmZoMXffDe#>~v@pE!9Tv%=&^W**kdmmgTooji|Od2%lj&wz<}!{&?3W-Oc8IR5bi E05tOyOaK4? delta 56 zcmZoMXffDe#>~uk!(;M7W`)U-%si|OhL0N%XTZc{u=ygh8Ovrij(_|B D80r$g diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate index 115a7fb40d30cc8cc16fd75f39b547725b56b2b3..69ed377fa62d2dd1c80e00caf89edb9176fa5a79 100644 GIT binary patch literal 144546 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 b)GaUFHTd6uez4vD{oDT+|Ns99mrni# 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 z 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 diff --git a/wake/CoreData/.DS_Store b/wake/CoreData/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..57909a7b428e50ae6d776df8edfd0452b0bb4347 GIT binary patch literal 6148 zcmeHKJ5Iwu5PcI;M4|~D<%*65DK~H;bAlAKByj{1wwwYaN?(H8AX-j9!EJamv!GbG zh$s+3Gt%yxot@dwv%IqlKo$?x4449#uqcWu1ES`^u2FU#6UD~3z#}%Ou)_VoK!4Gs zYd^siSA2&p_Se5cgO+>QqDEEU%$A$B+4&Ym?}tS-ZCS4Cc1`ce^V`eW)A{TC(8%hC zk-OXdmFjm52?m0JU?3O>26_xIXRAz(9it8gf`MS*ivc|!5{qJyv2(PegOxo2hB6hVp0RK$k;j3LJHbUP8AAuOT|P> j#cb#~a%!F4pHydmk+E~sQPghX#JC6;AyEYbzrer;SM@yp literal 0 HcmV?d00001 diff --git a/wake/View/Components/Upload/ImagePicker.swift b/wake/View/Components/Upload/ImagePicker.swift new file mode 100644 index 0000000..cb806dc --- /dev/null +++ b/wake/View/Components/Upload/ImagePicker.swift @@ -0,0 +1,58 @@ +import SwiftUI +import PhotosUI + +struct ImagePicker: UIViewControllerRepresentable { + @Binding var images: [UIImage] + var selectionLimit: Int + var onDismiss: (() -> Void)? + + func makeUIViewController(context: Context) -> PHPickerViewController { + var configuration = PHPickerConfiguration(photoLibrary: PHPhotoLibrary.shared()) + configuration.filter = .images + configuration.selectionLimit = selectionLimit + + let picker = PHPickerViewController(configuration: configuration) + picker.delegate = context.coordinator + return picker + } + + func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} + + func makeCoordinator() -> Coordinator { + Coordinator(self) + } + + class Coordinator: NSObject, PHPickerViewControllerDelegate { + let parent: ImagePicker + + init(_ parent: ImagePicker) { + self.parent = parent + } + + func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { + let group = DispatchGroup() + var newImages: [UIImage] = [] + + for result in results { + group.enter() + + if result.itemProvider.canLoadObject(ofClass: UIImage.self) { + result.itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in + if let image = image as? UIImage { + newImages.append(image) + } + group.leave() + } + } else { + group.leave() + } + } + + group.notify(queue: .main) { + self.parent.images = newImages + self.parent.onDismiss?() + picker.dismiss(animated: true) + } + } + } +} diff --git a/wake/View/Components/Upload/MultiImageUploader.swift b/wake/View/Components/Upload/MultiImageUploader.swift index 3598ef4..788ea11 100644 --- a/wake/View/Components/Upload/MultiImageUploader.swift +++ b/wake/View/Components/Upload/MultiImageUploader.swift @@ -1,258 +1,175 @@ import SwiftUI import PhotosUI -import os.log +import os @available(iOS 16.0, *) -public struct MultiImageUploader: View { - @State private var selectedImages: [UIImage] = [] +public struct MultiImageUploader: View { + @State var selectedImages: [UIImage] = [] @State private var uploadResults: [UploadResult] = [] @State private var isUploading = false @State private var showingImagePicker = false @State private var uploadProgress: [UUID: Double] = [:] // 跟踪每个上传任务的进度 + @State private var needsViewUpdate = false // Add this line to trigger view updates private let maxSelection: Int - private let onUploadComplete: ([UploadResult]) -> Void + public var onUploadComplete: ([UploadResult]) -> Void private let uploadService = ImageUploadService.shared private let logger = Logger(subsystem: "com.yourapp.uploader", category: "MultiImageUploader") + // 自定义内容 + private let content: ((_ isUploading: Bool, _ selectedCount: Int) -> Content)? + + /// 控制是否显示图片选择器 + @Binding var isImagePickerPresented: Bool + + /// 选中的图片 + @Binding var selectedImagesBinding: [UIImage]? + + /// 控制是否显示图片预览 + @State private var showingImagePreview = false + + // 初始化方法 - 使用自定义视图 public init( maxSelection: Int = 10, + isImagePickerPresented: Binding, + selectedImagesBinding: Binding<[UIImage]?>, + @ViewBuilder content: @escaping (_ isUploading: Bool, _ selectedCount: Int) -> Content, onUploadComplete: @escaping ([UploadResult]) -> Void ) { self.maxSelection = maxSelection + self._isImagePickerPresented = isImagePickerPresented + self._selectedImagesBinding = selectedImagesBinding + self.content = content + self.onUploadComplete = onUploadComplete + } + + // 初始化方法 - 使用默认按钮样式(向后兼容) + public init( + maxSelection: Int = 10, + isImagePickerPresented: Binding, + selectedImagesBinding: Binding<[UIImage]?>, + onUploadComplete: @escaping ([UploadResult]) -> Void + ) where Content == EmptyView { + self.maxSelection = maxSelection + self._isImagePickerPresented = isImagePickerPresented + self._selectedImagesBinding = selectedImagesBinding + self.content = nil self.onUploadComplete = onUploadComplete } public var body: some View { VStack(spacing: 16) { - // 上传按钮 - Button(action: { - showingImagePicker = true - }) { - Label("选择图片", systemImage: "photo.on.rectangle") + // 自定义内容或默认按钮 + if let content = content { + Button(action: { + showingImagePicker = true + }) { + content(isUploading, selectedImages.count) + } + .buttonStyle(PlainButtonStyle()) + } else { + // 默认按钮样式 + Button(action: { + showingImagePicker = true + }) { + Label( + !selectedImages.isEmpty ? + "已选择 \(selectedImages.count) 张图片" : + "选择图片", + systemImage: "photo.on.rectangle" + ) .font(.headline) .foregroundColor(.white) .padding() .frame(maxWidth: .infinity) .background(Color.blue) .cornerRadius(10) - } - .padding(.horizontal) - .sheet(isPresented: $showingImagePicker) { - ImagePicker(images: $selectedImages, selectionLimit: maxSelection) { - // 当选择完成时,开始上传 - if !selectedImages.isEmpty { - uploadImages() - } - } - } - - // 上传进度和图片网格 - ScrollView { - LazyVStack(spacing: 16) { - ForEach($uploadResults) { $result in - VStack(spacing: 8) { - // 图片预览 - Image(uiImage: result.image) - .resizable() - .scaledToFill() - .frame(height: 200) - .frame(maxWidth: .infinity) - .clipped() - .cornerRadius(8) - - // 上传进度条 - if case .uploading = result.status { - ProgressView(value: uploadProgress[result.id] ?? 0, total: 1.0) - .progressViewStyle(LinearProgressViewStyle()) - .padding(.horizontal) - - Text("上传中: \(Int((uploadProgress[result.id] ?? 0) * 100))%") - .font(.caption) - .foregroundColor(.secondary) - } else if case .success = result.status { - HStack { - Image(systemName: "checkmark.circle.fill") - .foregroundColor(.green) - Text("上传成功") - .font(.caption) - .foregroundColor(.green) - } - } else if case .failure = result.status { - HStack { - Image(systemName: "exclamationmark.triangle.fill") - .foregroundColor(.red) - Text("上传失败") - .font(.caption) - .foregroundColor(.red) - } - } - } - .padding() - .background(Color(.systemBackground)) - .cornerRadius(12) - .shadow(radius: 2) - } - } - .padding() - } - - // 上传按钮 - if !selectedImages.isEmpty && !isUploading { - Button(action: uploadImages) { - Text("开始上传 (\(selectedImages.count)张)") - .font(.headline) - .foregroundColor(.white) - .padding() - .frame(maxWidth: .infinity) - .background(Color.blue) - .cornerRadius(10) } .padding(.horizontal) - .padding(.bottom) } } - .background(Color(.systemGroupedBackground)) + .sheet(isPresented: $showingImagePicker) { + ImagePicker(images: $selectedImages, selectionLimit: maxSelection) { + // 当选择完成时,关闭选择器并开始上传 + showingImagePicker = false + if !selectedImages.isEmpty { + Task { + _ = await startUpload() + } + } + } + } + .onChange(of: isImagePickerPresented) { newValue in + if newValue { + showingImagePicker = true + } + } + .onChange(of: showingImagePicker) { newValue in + if !newValue { + isImagePickerPresented = false + } + } + .onChange(of: selectedImages) { newValue in + selectedImagesBinding = newValue + } + .onChange(of: needsViewUpdate) { _ in + // Trigger view update + } } - private func uploadImages() { - guard !isUploading else { return } + /// 上传图片方法,由父组件调用 + @MainActor + public func startUpload() async -> [UploadResult] { + guard !isUploading && !selectedImages.isEmpty else { return [] } isUploading = true - let group = DispatchGroup() - var results = selectedImages.map { image in - UploadResult(fileId: "", previewFileId: "", image: image, status: .uploading(progress: 0)) + uploadResults = selectedImages.map { + UploadResult(image: $0, status: .uploading(progress: 0)) } - // 更新UI显示上传中的状态 - uploadResults = results - - // 创建并发的DispatchQueue - let uploadQueue = DispatchQueue(label: "com.wake.uploadQueue", attributes: .concurrent) - let semaphore = DispatchSemaphore(value: 3) // 限制并发数为3 + let group = DispatchGroup() for (index, image) in selectedImages.enumerated() { - semaphore.wait() group.enter() - uploadQueue.async { - let resultId = results[index].id - - // 更新状态为上传中 - DispatchQueue.main.async { - if let idx = results.firstIndex(where: { $0.id == resultId }) { - results[idx].status = .uploading(progress: 0) - uploadProgress[resultId] = 0 - uploadResults = results - } - } - - // 上传原图 - uploadService.uploadImage(image, progress: { progress in + // 使用 ImageUploadService 上传图片 + uploadService.uploadOriginalAndCompressedImage( + image, + compressionQuality: 0.7, + progress: { progress in + // 更新上传进度 DispatchQueue.main.async { - uploadProgress[resultId] = progress.progress - if let idx = results.firstIndex(where: { $0.id == resultId }) { - results[idx].status = .uploading(progress: progress.progress) - uploadResults = results + if index < self.uploadResults.count { + self.uploadResults[index].status = .uploading(progress: progress.progress) + self.needsViewUpdate.toggle() // Trigger view update } } - }) { uploadResult in - defer { - semaphore.signal() - group.leave() - } - + }, + completion: { result in DispatchQueue.main.async { - if let idx = results.firstIndex(where: { $0.id == resultId }) { - switch uploadResult { - case .success(let uploadResult): - // 上传成功,更新结果 - results[idx].fileId = uploadResult.fileId - // 使用空字符串作为 previewFileId,因为 ImageUploaderGetID.UploadResult 没有这个属性 - results[idx].previewFileId = "" - results[idx].status = .success - uploadResults = results - - logger.info("图片上传成功: \(uploadResult.fileId)") - - case .failure(let error): - // 上传失败 - results[idx].status = .failure(error) - uploadResults = results - logger.error("图片上传失败: \(error.localizedDescription)") - } - } - } - } - } - } - - // 所有上传任务完成后的处理 - group.notify(queue: .main) { - self.isUploading = false - let successCount = results.filter { $0.status == .success }.count - logger.info("上传完成,成功: \(successCount)/\(results.count)") - self.onUploadComplete(results) - } - } -} - -// MARK: - 图片选择器 -@available(iOS 14.0, *) -struct ImagePicker: UIViewControllerRepresentable { - @Binding var images: [UIImage] - var selectionLimit: Int = 10 - var onDismiss: (() -> Void)? - - func makeUIViewController(context: Context) -> PHPickerViewController { - var config = PHPickerConfiguration(photoLibrary: .shared()) - config.filter = .images - config.selectionLimit = selectionLimit - config.preferredAssetRepresentationMode = .current - - let picker = PHPickerViewController(configuration: config) - picker.delegate = context.coordinator - return picker - } - - func updateUIViewController(_ uiViewController: PHPickerViewController, context: Context) {} - - func makeCoordinator() -> Coordinator { - Coordinator(self) - } - - class Coordinator: NSObject, PHPickerViewControllerDelegate { - let parent: ImagePicker - - init(_ parent: ImagePicker) { - self.parent = parent - } - - func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { - picker.dismiss(animated: true) - - let group = DispatchGroup() - var newImages: [UIImage] = [] - - for result in results { - group.enter() - let itemProvider = result.itemProvider - - if itemProvider.canLoadObject(ofClass: UIImage.self) { - itemProvider.loadObject(ofClass: UIImage.self) { [weak self] (image, error) in - if let image = image as? UIImage { - newImages.append(image) + guard index < self.uploadResults.count else { return } + switch result { + case .success(let uploadResults): + self.uploadResults[index].status = .success + self.uploadResults[index].fileId = uploadResults.original.fileId + self.uploadResults[index].previewFileId = uploadResults.compressed.fileId + self.needsViewUpdate.toggle() // Trigger view update + case .failure(let error): + self.uploadResults[index].status = .failure(error) + self.needsViewUpdate.toggle() // Trigger view update + self.logger.error("图片上传失败: \(error.localizedDescription)") } group.leave() } - } else { - group.leave() } - } - + ) + } + + return await withCheckedContinuation { continuation in group.notify(queue: .main) { - self.parent.images = newImages - self.parent.onDismiss?() + self.isUploading = false + self.needsViewUpdate.toggle() // Trigger view update + continuation.resume(returning: self.uploadResults) } } } diff --git a/wake/View/Examples/ImageUploadExampleView.swift b/wake/View/Examples/ImageUploadExampleView.swift deleted file mode 100644 index 37393de..0000000 --- a/wake/View/Examples/ImageUploadExampleView.swift +++ /dev/null @@ -1,284 +0,0 @@ -import SwiftUI -import os.log - -/// 多图上传示例视图 -/// 展示如何使用 MultiImageUploader 组件实现多图上传功能 -@available(iOS 16.0, *) -struct MultiImageUploadExampleView: View { - // MARK: - 状态属性 - - @State private var uploadResults: [UploadResult] = [] - @State private var isShowingUploader = false - @State private var showUploadAlert = false - @State private var alertMessage = "" - @State private var isUploading = false - - private let logger = Logger(subsystem: "com.yourapp.uploader", category: "MultiImageUploadExample") - - // MARK: - 视图主体 - - var body: some View { - NavigationView { - VStack(spacing: 16) { - // 上传按钮和状态 - uploadButton - - // 上传统计信息 - if !uploadResults.isEmpty { - uploadStatsView - } - - // 上传进度列表 - uploadProgressList - - Spacer() - } - .navigationTitle("多图上传示例") - .toolbar { - // 清空按钮 - if !uploadResults.isEmpty && !isUploading { - Button("清空") { - withAnimation { - uploadResults.removeAll() - } - } - } - } - .sheet(isPresented: $isShowingUploader) { - // 多图上传组件 - MultiImageUploader( - maxSelection: 10 - ) { results in - processUploadResults(results) - } - } - .alert("上传结果", isPresented: $showUploadAlert) { - Button("确定", role: .cancel) { } - } message: { - Text(alertMessage) - } - } - } - - // MARK: - 子视图 - - /// 上传按钮 - private var uploadButton: some View { - Button(action: { isShowingUploader = true }) { - Label("选择并上传图片", systemImage: "photo.on.rectangle.angled") - .font(.headline) - .foregroundColor(.white) - .padding() - .frame(maxWidth: .infinity) - .background(Color.blue) - .cornerRadius(10) - } - .padding(.horizontal) - .padding(.top) - } - - /// 上传统计信息 - private var uploadStatsView: some View { - VStack(alignment: .leading, spacing: 8) { - let successCount = uploadResults.filter { $0.status == .success }.count - let inProgressCount = uploadResults.filter { - if case .uploading = $0.status { return true } - return false - }.count - let failedCount = uploadResults.count - successCount - inProgressCount - - Text("上传统计") - .font(.headline) - - HStack { - StatView( - value: "\(uploadResults.count)", - label: "总数量", - color: .blue - ) - - StatView( - value: "\(successCount)", - label: "成功", - color: .green - ) - - StatView( - value: "\(inProgressCount)", - label: "上传中", - color: .orange - ) - - StatView( - value: "\(failedCount)", - label: "失败", - color: .red - ) - } - - // 总进度条 - if inProgressCount > 0 { - let progress = uploadResults.reduce(0.0) { result, uploadResult in - if case .uploading(let progress) = uploadResult.status { - return result + progress - } else if uploadResult.status == .success { - return result + 1.0 - } - return result - } / Double(uploadResults.count) - - VStack(alignment: .leading, spacing: 4) { - Text("总进度: \(Int(progress * 100))%") - .font(.subheadline) - ProgressView(value: progress) - .progressViewStyle(LinearProgressViewStyle(tint: .blue)) - } - .padding(.top, 8) - } - } - .padding() - .background(Color(.systemGray6)) - .cornerRadius(10) - .padding(.horizontal) - } - - /// 上传进度列表 - private var uploadProgressList: some View { - List { - ForEach($uploadResults) { $result in - VStack(alignment: .leading, spacing: 8) { - // 图片缩略图和状态 - HStack { - // 图片缩略图 - Image(uiImage: result.image) - .resizable() - .scaledToFill() - .frame(width: 60, height: 60) - .clipped() - .cornerRadius(8) - .overlay( - RoundedRectangle(cornerRadius: 8) - .stroke(borderColor(for: result.status), lineWidth: 1) - ) - - // 状态和进度 - VStack(alignment: .leading, spacing: 4) { - Text("图片 \(result.id.uuidString.prefix(8))...") - .font(.subheadline) - - switch result.status { - case .uploading(let progress): - VStack(alignment: .leading, spacing: 4) { - Text("上传中: \(Int(progress * 100))%") - .font(.caption) - ProgressView(value: progress) - .progressViewStyle(LinearProgressViewStyle()) - } - case .success: - HStack { - Image(systemName: "checkmark.circle.fill") - .foregroundColor(.green) - Text("上传成功") - .font(.caption) - .foregroundColor(.green) - } - case .failure(let error): - HStack { - Image(systemName: "exclamationmark.triangle.fill") - .foregroundColor(.red) - Text("上传失败: \(error.localizedDescription)") - .font(.caption) - .foregroundColor(.red) - } - case .idle: - Text("等待上传...") - .font(.caption) - .foregroundColor(.secondary) - } - } - - Spacer() - } - .padding(.vertical, 4) - } - .padding(.vertical, 8) - .listRowSeparator(.hidden) - } - } - .listStyle(PlainListStyle()) - .animation(.easeInOut, value: uploadResults) - } - - // MARK: - 辅助方法 - - /// 获取状态对应的边框颜色 - private func borderColor(for status: UploadStatus) -> Color { - switch status { - case .success: return .green - case .failure: return .red - case .uploading: return .blue - case .idle: return .gray - } - } - - /// 处理上传结果 - private func processUploadResults(_ results: [UploadResult]) { - // 更新状态 - isUploading = results.contains { result in - if case .uploading = result.status { return true } - return false - } - - // 更新结果 - withAnimation { - uploadResults = results - isShowingUploader = false - } - - // 检查是否全部完成 - let allFinished = !results.contains { result in - if case .uploading = result.status { return true } - if case .idle = result.status { return true } - return false - } - - if allFinished { - let successCount = results.filter { $0.status == .success }.count - let totalCount = results.count - alertMessage = "上传完成\n成功: \(successCount)/\(totalCount)" - showUploadAlert = true - isUploading = false - - logger.info("上传完成,成功: \(successCount)/\(totalCount)") - } - } -} - -// MARK: - 子视图 - -/// 统计信息视图 -private struct StatView: View { - let value: String - let label: String - let color: Color - - var body: some View { - VStack { - Text(value) - .font(.title3.bold()) - .foregroundColor(color) - Text(label) - .font(.caption) - .foregroundColor(.secondary) - } - .frame(maxWidth: .infinity) - } -} - -// MARK: - 预览 -@available(iOS 16.0, *) -struct MultiImageUploadExampleView_Previews: PreviewProvider { - static var previews: some View { - MultiImageUploadExampleView() - } -} \ No newline at end of file diff --git a/wake/View/Examples/MultiImageUploadExampleView.swift b/wake/View/Examples/MultiImageUploadExampleView.swift new file mode 100644 index 0000000..0409f1f --- /dev/null +++ b/wake/View/Examples/MultiImageUploadExampleView.swift @@ -0,0 +1,162 @@ +import SwiftUI +import PhotosUI + +struct MultiImageUploadExampleView: View { + @State private var isImagePickerPresented = false + @State private var selectedImages: [UIImage]? = [] + @State private var uploadResults: [UploadResult] = [] + @State private var showAlert = false + @State private var alertMessage = "" + + var body: some View { + ScrollView { + VStack(spacing: 20) { + // Custom upload button with image count + MultiImageUploader( + maxSelection: 10, + isImagePickerPresented: $isImagePickerPresented, + selectedImagesBinding: $selectedImages, + content: { isUploading, count in + VStack(spacing: 8) { + Image(systemName: "photo.stack") + .font(.system(size: 24)) + + if isUploading { + ProgressView() + .padding(.vertical, 4) + Text("上传中...") + .font(.subheadline) + } else { + Text(count > 0 ? "已选择 \(count) 张图片" : "选择图片") + .font(.headline) + Text("最多可选择10张图片") + .font(.caption) + .foregroundColor(.secondary) + } + } + .frame(maxWidth: .infinity) + .padding() + .background(Color.blue.opacity(0.1)) + .cornerRadius(12) + .overlay( + RoundedRectangle(cornerRadius: 12) + .stroke(Color.blue, lineWidth: 1) + ) + }, + onUploadComplete: handleUploadComplete + ) + .padding(.horizontal) + .padding(.top, 20) + + // Selected images preview with progress + if let images = selectedImages, !images.isEmpty { + VStack(alignment: .leading, spacing: 12) { + Text("已选择图片") + .font(.headline) + .padding(.horizontal) + + LazyVGrid(columns: [ + GridItem(.flexible(), spacing: 8), + GridItem(.flexible(), spacing: 8), + GridItem(.flexible(), spacing: 8) + ], spacing: 8) { + ForEach(Array(images.enumerated()), id: \.offset) { index, image in + ZStack(alignment: .topTrailing) { + Image(uiImage: image) + .resizable() + .scaledToFill() + .frame(height: 100) + .clipped() + .cornerRadius(8) + .overlay( + RoundedRectangle(cornerRadius: 8) + .stroke(Color.gray.opacity(0.3), lineWidth: 1) + ) + + // Upload progress indicator + if index < uploadResults.count { + let result = uploadResults[index] + VStack { + Spacer() + ZStack(alignment: .leading) { + Rectangle() + .fill(Color.gray.opacity(0.2)) + .frame(height: 4) + + if case .uploading(let progress) = result.status { + Rectangle() + .fill(Color.blue) + .frame(width: CGFloat(progress) * 100, height: 4) + } else if case .success = result.status { + Rectangle() + .fill(Color.green) + .frame(height: 4) + } else if case .failure = result.status { + Rectangle() + .fill(Color.red) + .frame(height: 4) + } + } + .cornerRadius(2) + .padding(.horizontal, 2) + .padding(.bottom, 2) + } + .frame(height: 20) + } + + // Status indicator + if index < uploadResults.count { + let result = uploadResults[index] + Circle() + .fill(statusColor(for: result.status)) + .frame(width: 12, height: 12) + .padding(4) + .background(Circle().fill(Color.white)) + .padding(4) + } + } + } + } + .padding(.horizontal) + } + } + + Spacer() + } + } + .navigationTitle("多图上传示例") + .alert(isPresented: $showAlert) { + Alert(title: Text("上传结果"), message: Text(alertMessage), dismissButton: .default(Text("确定"))) + } + } + + private func handleUploadComplete(_ results: [UploadResult]) { + self.uploadResults = results + let successCount = results.filter { + if case .success = $0.status { return true } + return false + }.count + + alertMessage = "上传完成!共 \(results.count) 张图片,成功 \(successCount) 张" + showAlert = true + } + + private func statusColor(for status: UploadStatus) -> Color { + switch status { + case .uploading: + return .blue + case .success: + return .green + case .failure: + return .red + default: + return .gray + } + } +} + +#Preview { + NavigationView { + MultiImageUploadExampleView() + } +}