系统扫二维码
来源:互联网 发布:小炫代刷网源码 编辑:程序博客网 时间:2024/04/30 04:37
#import "WQRcodeVC.h"
#import <AVFoundation/AVFoundation.h>
@interface WQRcodeVC ()<AVCaptureMetadataOutputObjectsDelegate,UIAlertViewDelegate>
//设备
@property (nonatomic,strong)AVCaptureDevice *device;
//设备输入
@property (nonatomic,strong)AVCaptureDeviceInput *input;
@property (nonatomic,strong)AVCaptureMetadataOutput *output;
//扫描会话
@property (nonatomic,strong)AVCaptureSession *session;
//背景图片
@property (nonatomic,strong)UIImageView *bgImageView;
//扫描线
@property (nonatomic,strong)UIImageView *lineImageView;
//扫描图层
@property (nonatomic,strong) AVCaptureVideoPreviewLayer *layer;
@end
@implementation WQRcodeVC
-(UIImageView *)bgImageView{
if (!_bgImageView) {
_bgImageView = [[UIImageViewalloc] initWithFrame:CGRectMake(([UIScreenmainScreen].bounds.size.width - 280 ) /2.0,100, 280,280)];
_bgImageView.image = [UIImageimageNamed:@"pick_bg"];
}
return_bgImageView;
}
-(UIImageView *)lineImageView{
if (!_lineImageView) {
_lineImageView = [[UIImageViewalloc] initWithFrame:CGRectMake(([UIScreenmainScreen].bounds.size.width - 280 ) /2.0,110, 280,2)];
_lineImageView.image = [UIImageimageNamed:@"line"];
}
return_lineImageView;
}
- (void)viewDidLoad {
[superviewDidLoad];
// IOS7之前,都是使用第三方库zbar来实现扫面二维码的功能,IOS7之后系统提供了二维码扫描的方法(真机有效)
self.view.backgroundColor = [UIColorlightGrayColor];
[selfsetTitle:@"扫码"];
[self.viewaddSubview:self.bgImageView];
[self.viewaddSubview:self.lineImageView];
//开始扫描二维码(条形码)
[selfreadQrcode];
}
-(void)readQrcode{
//实例化设备对象
self.device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error;
//实例化设备输入
self.input = [[AVCaptureDeviceInputalloc] initWithDevice:self.deviceerror:&error];
if (error) {
NSLog(@"error = %@",error);
}
//实例化设备输出
self.output = [AVCaptureMetadataOutputnew];
//设置代理
[self.outputsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];
//实例化扫描会话
self.session = [AVCaptureSessionnew];
//添加会话输入
[self.sessionaddInput:self.input];
//添加会话输出
[self.sessionaddOutput:self.output];
//设置输出支持的二维码或者条形码类型(一定要添加到会话之后再设置类型,否则会崩溃)
[self.outputsetMetadataObjectTypes:@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeCode39Mod43Code,AVMetadataObjectTypeCode93Code,AVMetadataObjectTypeCode128Code]];
//添加扫描图层
AVCaptureVideoPreviewLayer *PreviewLayer = [[AVCaptureVideoPreviewLayeralloc] initWithSession:self.session];
//设置图层布局(铺满)
PreviewLayer.videoGravity =AVLayerVideoGravityResizeAspectFill;
//设置图层大小和位置
PreviewLayer.frame =CGRectMake(([UIScreenmainScreen].bounds.size.width - 280 ) /2.0,110, 280,280);
//把扫描的图层出入到self.View的最底层layer当中
[self.view.layerinsertSublayer:PreviewLayeratIndex:0];
self.layer = PreviewLayer;
//开始扫描
[self.sessionstartRunning];
//循环移动扫描线
[selflineMoveAround];
}
- 系统扫二维码
- ios7系统api扫码二维码
- IOS生成二维码、扫二维码
- 扫码二维码
- ios 二维码扫瞄
- IOS 扫二维码
- 二维码扫名片
- Android 二维码扫码
- IOS 二维码扫码
- ZXing扫二维码,变形
- ZXING-二维码扫面
- 二维码扫码优化
- 二维码扫码
- 二维码扫码
- ios 二维码生成 扫瞄
- iOS7 AVFoundation 二维码扫瞄
- iOS7 AVFoundation 二维码扫瞄
- iOS7 AVFoundation 二维码扫瞄
- experiment目录递归,indent C standard style
- Linux 系统调用
- linux网络编程:用C语言实现的聊天程序(异步通信)
- mybatis中的#和$的区别
- 嵌入式方向学习的重点
- 系统扫二维码
- linux网络编程:用C语言实现的聊天程序(同步通信)
- Linux目录递归改变文件名大小写
- mac开发中使用自定义NSTableCellView
- 2017.02.28回顾 gbdt预测值更新 np数组取反
- 去html标签
- 国外国内技术社区活跃的Android大神部分汇总
- egrep在文件中找IP地址
- php中urlencode与rawurlencode的区别有那些呢