Минималистичный QR-сканер с использованием SwiftUI и AVFoundation
| Функция | Описание |
|---|---|
| 📷 Сканирование QR-кодов | Использование камеры устройства через AVFoundation |
| ⚡ Мгновенное распознавание | Быстрое получение данных после наведения |
| 🔗 Обработка ссылок | Возможность открыть ссылку в браузере |
| 📋 Копирование результата | Копирование отсканированного текста |
| 🔄 Повторное сканирование | Быстрое возвращение к камере |
| 🎨 Кастомный Overlay | Визуальная рамка наведения на QR-код |
Проект реализован с использованием архитектурного паттерна MVVM (Model-View-ViewModel).
graph TD
A[ContentView] --> B[QRScannerViewModel]
B --> C[AVCaptureSession]
B --> D[AVCaptureMetadataOutput]
A --> E[CameraPreview]
A --> F[ResultSheet]
- UI Framework: SwiftUI
- Architecture: MVVM
- Camera & Scanning: AVFoundation
QRScanner/
├── QRScannerApp.swift # Точка входа приложения
├── ContentView.swift # Главный экран
├── QRScannerViewModel.swift # Логика сканирования (MVVM)
├── CameraPreview.swift # UIViewRepresentable для камеры
├── ViewFinderOverlay.swift # Overlay с рамкой наведения
├── ResultSheet.swift # Модальное окно результата
└── Assets.xcassets # Ресурсы
Проект реализован по видеоуроку:
📺 YouTube:
SwiftUI QR Scanner Tutorial
В процессе реализации:
- Освоена интеграция AVFoundation в SwiftUI
- Реализован UIViewRepresentable для камеры
- Настроена работа с AVCaptureSession
- Обработаны разрешения на доступ к камере
- Реализована реактивная логика через ViewModel
- iOS: 16.0+
- Xcode: 15.0+
- Swift: 5.9+
git clone https://github.com/YourUsername/QRScanner.git
cd QRScanner
open QRScanner.xcodeprojInfo.plist:
<key>NSCameraUsageDescription</key>
<string>Приложению требуется доступ к камере для сканирования QR-кодов</string>- Запустите приложение
- Наведите камеру на QR-код
- Дождитесь автоматического распознавания
- В открывшемся окне:
- 🔗 Откройте ссылку
- 📋 Скопируйте данные
- 🔄 Отсканируйте снова
Приложение использует:
- 📷 Камеру (AVFoundation)
Никакие данные не сохраняются и не передаются на сервер.
Проект создан в образовательных целях. Распространяется под лицензией MIT.
⭐ Если вам понравилась реализация, не забудьте поставить звезду!


