# MyQrCode - SwiftUI 版本 ## 项目概述 这是一个使用 SwiftUI 构建的条码扫描器应用,支持二维码和多种条形码格式,已经从原来的 UIKit 版本完全转换为 SwiftUI。 ## 主要变化 ### 从 UIKit 转换为 SwiftUI - **ScannerViewController.swift** → **ScannerView.swift** - 使用 `@StateObject` 管理扫描器状态 - 使用 `UIViewRepresentable` 包装相机预览层 - 采用 MVVM 架构模式 ### 新特性 1. **现代化的 UI 设计** - 扫描框覆盖层,提供视觉引导 - 美观的按钮和文本样式 - 响应式布局 2. **改进的状态管理** - 使用 `@Published` 属性包装器 - 通过通知中心传递扫描结果 - 更好的错误处理 3. **用户体验优化** - 扫描成功后的震动反馈 - 清晰的扫描指导文本 - 优雅的模态展示 4. **多格式条码支持** - 二维码 (QR Code) - EAN-8 和 EAN-13 条形码 - Code 128 和 Code 39 条形码 - UPC-E 条形码 - PDF417 和 Aztec 码 5. **微信风格扫描界面** - 扫描线动画效果 - 检测到条码时短暂暂停预览 - 条码位置中心点标记(绿色圆圈) - 点击标记直接选择条码 - 支持重新扫描 ## 文件结构 ``` MyQrCode/ ├── ScannerView.swift # 新的 SwiftUI 扫描器视图 ├── ContentView.swift # 更新的主内容视图 ├── MyQrCodeApp.swift # 应用入口点 └── ...其他文件 ``` ## 使用方法 1. 启动应用后,点击"开始扫描"按钮 2. 将二维码或条形码放入扫描框内 3. 扫描成功后: - 短暂暂停预览并显示条码覆盖层 - 在相机预览上显示条码位置标记(绿色圆圈) 4. 在预览暂停时: - 在相机预览上显示条码位置标记(绿色圆圈) - 单个条码:1秒后自动显示结果 - 多个条码:点击绿色标记选择要解码的条码 - 点击"重新扫描"继续扫描 5. 单个条码自动选择,多个条码手动选择 6. 可以重复扫描新的条码 ## 技术特点 - **SwiftUI**: 现代化的声明式 UI 框架 - **AVFoundation**: 相机和条码扫描功能 - **MVVM 架构**: 清晰的代码分离和状态管理 - **通知中心**: 组件间的松耦合通信 ## 兼容性 - iOS 14.0+ - Xcode 12.0+ - Swift 5.3+ ## 注意事项 - 需要在真机上测试相机功能 - 确保在 Info.plist 中添加相机权限描述 - 扫描器支持屏幕旋转和尺寸变化 - 条码位置标记会自动适应屏幕变化