You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 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 中添加相机权限描述
- 扫描器支持屏幕旋转和尺寸变化
- 条码位置标记会自动适应屏幕变化