import SwiftUI import AVFoundation // MARK: - 相机权限视图 struct CameraPermissionView: View { 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) // 描述文本 Text(getDescriptionText()) .font(.body) .multilineTextAlignment(.center) .foregroundColor(.secondary) .padding(.horizontal, 40) // 操作按钮 VStack(spacing: 15) { if authorizationStatus == .notDetermined { Button(action: onRequestPermission) { HStack { Image(systemName: "camera.badge.ellipsis") Text("request_camera_permission".localized) } .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) } .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 } } }