iOS开发之二维码扫描
来源:互联网 发布:撕开照片衣服的软件 编辑:程序博客网 时间:2024/05/18 17:27
二维码需要自带的库
AVFoundation/AVFoundation.h
创建对象
AVCaptureSession *session;
//开启摄像头
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
//获取摄像设备
AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//创建输入流
AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
//创建输出流
AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutput alloc]init];
//设置代理在主线程里刷新
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
//初始化链接对象
AVCaptureSession *session = [[AVCaptureSession alloc]init];
self.session = session;
//高质量采集率
[session setSessionPreset:AVCaptureSessionPresetHigh];
[session addInput:input];
[session addOutput:output];
//设置扫码支持的编码格式(如下设置条形码和二维码兼容)
output.metadataObjectTypes=@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code];
AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
layer.videoGravity=AVLayerVideoGravityResizeAspectFill;
layer.frame=self.view.layer.bounds;
[self.view.layer insertSublayer:layer atIndex:0];
//开始捕获
[session startRunning];
}
// 镂空方格 -> 创建图层
// 参考http://segmentfault.com/a/1190000002436915
CALayer *maskLayer = [CALayer layer];
maskLayer.frame = self.view.frame;
// 除镂空之外的地方,使用什么颜色填充
maskLayer.backgroundColor = [UIColor yellowColor].CGColor;
// 透明度为60%
maskLayer.opacity = 0.6;
[self.view.layer addSublayer:maskLayer];
//在图层中间抠出一块透明区域
// 镂空范围为200x200
CGFloat rectSize = 200;
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = self.view.frame;
[shapeLayer byRoundingCorners:UIRectCornerTopLeft|UIRectCornerBottomRight];
// http://jamesonquave.com/blog/fun-with-cashapelayer/
// 指明左上角和右下角为圆角,其他为方角 byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRight
// 指明圆半径为20像素 cornerRadii:CGSizeMake(20, 20)
// 镂空方格的frame bezierPathWithRoundedRect
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake((self.view.frame.size.width - rectSize) /2, (self.view.frame.size.height - rectSize) /2, rectSize, rectSize) byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(40,40)];
[path appendPath:[UIBezierPath bezierPathWithRect:self.view.layer.frame]];
shapeLayer.path = path.CGPath;
shapeLayer.fillRule = kCAFillRuleEvenOdd;
maskLayer.mask = shapeLayer;
- iOS开发之二维码扫描
- iOS开发之 二维码生成/二维码扫描
- 学习iOS开发之扫描二维码
- IOS开发 扫描二维码
- 二维码扫描ios开发
- iOS开发扫描二维码
- iOS开发二维码扫描
- ios 开发之 扫描二维码和生成二维码
- iOS之二维码扫描
- iOS开发-二维码扫描
- iOS 开发 二维码扫描详解
- IOS开发(91)之ZBar 条形码二维码扫描控件
- iOS开发之扫描二维码功能的实现
- iOS 之原生扫描二维码
- Android开发之二维码扫描
- iOS之长按识别二维码/生成二维码/扫描二维码
- iOS开发技术 - 二维码扫描、生成
- IOS 开发学习十九 二维码扫描-QRCodeReaderViewController
- 微博登录界面的实现
- 设计模式笔记-单例模式
- Linux系统参数配置简介
- 百度之星2016初赛第二场(Astar Round 2B)
- 触发器的操作
- iOS开发之二维码扫描
- 文章标题
- LeetCode 141. Linked List Cycle
- 前端架构组件化开发系列一(Grid)
- 视频播放
- SharedPreferences详解
- LightOJ 1010 Knights in Chessboard
- jsp生成html
- Android WebView与JS的交互