import SwiftUI import AVFoundation // MARK: - 相机权限视图 struct CameraPermissionView: View { @EnvironmentObject var languageManager: LanguageManager let authorizationStatus: AVAuthorizationStatus let onRequestPermission: () -> Void let onOpenSettings: () -> Void var body: some View { VStack(spacing: 30) { Spacer() // 相机图标 Image(systemName: "camera.fill") .font(.system(size: 80)) .foregroundColor(.gray) // 标题 Text("camera_permission_title".localized) .font(.largeTitle) .fontWeight(.bold) .multilineTextAlignment(.center) .id(languageManager.refreshTrigger) // 描述文本 Text(getDescriptionText()) .font(.body) .multilineTextAlignment(.center) .foregroundColor(.secondary) .padding(.horizontal, 40) .id(languageManager.refreshTrigger) // 操作按钮 VStack(spacing: 15) { if authorizationStatus == .notDetermined { Button(action: onRequestPermission) { HStack { Image(systemName: "camera.badge.ellipsis") Text("request_camera_permission".localized) .id(languageManager.refreshTrigger) } .font(.headline) .foregroundColor(.white) .frame(maxWidth: .infinity) .padding() .background(Color.blue) .cornerRadius(12) } } else if authorizationStatus == .denied || authorizationStatus == .restricted { Button(action: onOpenSettings) { HStack { Image(systemName: "gear") Text("open_settings".localized) .id(languageManager.refreshTrigger) } .font(.headline) .foregroundColor(.white) .frame(maxWidth: .infinity) .padding() .background(Color.orange) .cornerRadius(12) } } } .padding(.horizontal, 40) Spacer() } .background(Color(.systemBackground)) } private func getDescriptionText() -> String { switch authorizationStatus { case .notDetermined: return "camera_permission_description".localized case .denied: return "camera_permission_denied".localized case .restricted: return "camera_permission_restricted".localized default: return "camera_permission_unknown".localized } } }