iOS开发--二维码的扫描
一.需要包含头文件
#import <AVFoundation/AVFoundation.h>
二.通过设置<AVCaptureMetadataOutputObjectsDelegate>代理可以监听扫描到的二维码中的信息
三.具体代码
1 #import "ViewController.h" 2 #import <AVFoundation/AVFoundation.h> 3 4 @interface ViewController () <AVCaptureMetadataOutputObjectsDelegate> 5 6 @end 7 8 @implementation ViewController 9 10 - (void)viewDidLoad { 11 [super viewDidLoad]; 12 } 13 14 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 15 { 16 // 1.创建捕捉会话 17 AVCaptureSession *session = [[AVCaptureSession alloc] init]; 18 19 // 2.设置输入设备 20 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 21 AVCaptureDeviceInput *inputDevice = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; 22 [session addInput:inputDevice]; 23 24 // 3.设置输入方式 25 AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init]; 26 [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; 27 [session addOutput:output]; 28 [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]]; 29 30 // 4.添加一个显示的layer 31 AVCaptureVideoPreviewLayer *layer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 32 layer.frame = self.view.bounds; 33 [self.view.layer addSublayer:layer]; 34 35 // 5.开始扫描 36 [session startRunning]; 37 } 38 39 #pragma mark - 获取扫描结果 40 - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection 41 { 42 if (metadataObjects.count > 0) { 43 AVMetadataMachineReadableCodeObject *object = [metadataObjects lastObject]; 44 NSLog(@"%@", object.stringValue); 45 } 46 } 47 48 @end
分类:
OC学习之路--iOS基础
, iOS开发--二维码
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)