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