系统扫二维码

#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,strongAVCaptureVideoPreviewLayer *layer;


@end


@implementation WQRcodeVC


-(UIImageView *)bgImageView{

    

    if (!_bgImageView) {

        _bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width - 280 ) /2.0, 100, 280, 280)];

        _bgImageView.image = [UIImage imageNamed:@"pick_bg"];

    }

    

    return _bgImageView;

    

}


-(UIImageView *)lineImageView{

    

    if (!_lineImageView) {

        _lineImageView = [[UIImageView alloc] initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width - 280 ) /2.0, 110, 280, 2)];

        _lineImageView.image = [UIImage imageNamed:@"line"];

    }

    return _lineImageView;

}



- (void)viewDidLoad {

    [super viewDidLoad];

    // IOS7之前,都是使用第三方库zbar来实现扫面二维码的功能,IOS7之后系统提供了二维码扫描的方法(真机有效)

    self.view.backgroundColor = [UIColor lightGrayColor];

    

    [self setTitle:@"扫码"];

    

    [self.view addSubview:self.bgImageView];

    [self.view addSubview:self.lineImageView];

    

    //开始扫描二维码(条形码)

    [self readQrcode];

}

-(void)readQrcode{

    

    //实例化设备对象

    self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    

    NSError *error;

    //实例化设备输入

    self.input = [[AVCaptureDeviceInput alloc] initWithDevice:self.device error:&error];

    

    if (error) {

        NSLog(@"error = %@",error);

    }

    

    

    //实例化设备输出

    self.output = [AVCaptureMetadataOutput new];

    //设置代理

    [self.output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

    

    //实例化扫描会话

    self.session = [AVCaptureSession new];

    

    //添加会话输入

    [self.session addInput:self.input];

    //添加会话输出

    [self.session addOutput:self.output];

    

    //设置输出支持的二维码或者条形码类型(一定要添加到会话之后再设置类型,否则会崩溃)

    [self.output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeCode39Mod43Code,AVMetadataObjectTypeCode93Code,AVMetadataObjectTypeCode128Code]];

    

    //添加扫描图层

    AVCaptureVideoPreviewLayer *PreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.session];

    

    //设置图层布局(铺满)

    PreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;

    

    //设置图层大小和位置

    PreviewLayer.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width - 280 ) /2.0, 110, 280, 280);

    

    //把扫描的图层出入到self.View的最底层layer当中

    [self.view.layer insertSublayer:PreviewLayer atIndex:0];

    

    self.layer = PreviewLayer;


    

    //开始扫描

    [self.session startRunning];

   

    

    //循环移动扫描线

    [self lineMoveAround];

    

}


详细完整资源资源代码:http://download.csdn.net/detail/qq_33646395/9766846
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值