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.

90 lines
2.5 KiB

4 months ago
# 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 中添加相机权限描述
- 扫描器支持屏幕旋转和尺寸变化
- 条码位置标记会自动适应屏幕变化