Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描

  这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画!

操作步骤:

  1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label

          

   2)、你需要在你当前的控制器中导入

        #import <AVFoundation/AVFoundation.h>

        <AVCaptureMetadataOutputObjectsDelegate>代理

   3)、在@interface中定义    

      @property (nonatomic,strong)AVCaptureDevice * device;

      @property (nonatomic,strong)AVCaptureDeviceInput * input;

      @property (nonatomic,strong)AVCaptureMetadataOutput * output;

      @property (nonatomic,strong)AVCaptureSession * session;

      @property (nonatomic,strong)AVCaptureVideoPreviewLayer * preview;

    4)、将UI界面中的俩个图片属性拖进来

      @property (strong, nonatomic) IBOutlet UIImageView *preReferImage;//这个是UI界面中的框子图片

      @property (nonatomic,strong)IBOutlet UIImageView * imageLine;//这个是UI界面中的绿色线条图片

    5)、就是将如下代码放进你的控制器中   

  - (void)viewDidLoad

    {

        [super viewDidLoad];

        [self setupCamera];//设置相机

}

    //设置相机

  -(void)setupCamera

    {

     // Device 属性 

     self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    // Input 属性

     NSError *error = nil;

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

   if (error) {

     NSLog(@"错误");

    return;

    }

    // Output 属性

     self.output = [[AVCaptureMetadataOutput alloc]init];

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

     // Session 属性

     self.session = [[AVCaptureSession alloc]init];

     [self.session setSessionPreset:AVCaptureSessionPresetHigh];

    if ([self.session canAddInput:self.input])

    {

     [self.session addInput:self.input];

   }

     if ([self.session canAddOutput:self.output])

  {

    [self.session addOutput:self.output];

   }

  self.output.metadataObjectTypes [email protected][AVMetadataObjectTypeQRCode];//这里是设置扫描的类型

   // Preview 属性

  self.preview = [AVCaptureVideoPreviewLayer layerWithSession:self.session];

   self.preview.videoGravity = AVLayerVideoGravityResizeAspectFill;

  self.preview.frame = self.view.bounds;

  [self.view.layer insertSublayer:self.preview below:self.preReferImage.layer];  

  // Start 属性

  [self.session startRunning];  

    [self setupAnimation];//这个是横线的上下扫描动画,可添加可不添加

   }

/**注意了:你如果需要添加这个横线扫描的动画需要在@interface中添加如下几个属性*/

{

int lineValue; //保存横线的frame值

NSTimer * timer;//定时器让横线走动

BOOL Down;//向下

BOOL up;//向上

}

  //横线动画

 - (void)setupAnimation

  {

    CGFloat beginLineValue = CGRectGetMinY(self.preReferImage.frame);

   Down = YES;

   up = NO;

   lineValue =beginLineValue;

   [timer invalidate];

   timer = [NSTimer scheduledTimerWithTimeInterval:.01

target:self selector:@selector(animation1) userInfo:nil repeats:YES];

}

 -(void)animation1

  {

    if (Down) {

  CGFloat maxValue = CGRectGetMaxY(self.preReferImage.frame);

 lineValue++;

  self.imageLine.frame = CGRectMake(self.imageLine.frame.origin.x,lineValue, self.imageLine.frame.size.width, self.imageLine.frame.size.height);

if (lineValue ==maxValue) {

up = YES;

}

}

   if (up){

   CGFloat minValue = CGRectGetMinY(self.preReferImage.frame);

   lineValue-=2;

    self.imageLine.frame = CGRectMake(self.imageLine.frame.origin.x, lineValue, self.imageLine.frame.size.width, self.imageLine.frame.size.height);

if (lineValue ==minValue) {

Down = YES;

up = NO;

}

}

}

/**这个是必须要实现的代理方法,从这个方法中可以得到所扫描出来的URL*/

#pragma mark - AVCaptureMetadataOutputObjectsDelegate

-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection

{

NSString * stringValue ;

if ([metadataObjects count] > 0) {

[self.session stopRunning];

AVMetadataMachineReadableCodeObject * metadataObj = [metadataObjects objectAtIndex:0];

stringValue = metadataObj.stringValue;

[timer invalidate];//这个是扫描成功后停止动画

timer = nil;

[self requestParsing:stringValue]; //这个是扫描成功后所做的网络请求方法,可以注释

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

}

}

/**注意:

    1、以上这个例子只是说明如何使用系统自带的二维码扫描,没有做扫描成功后进行网络访问;

    2、这个二维码扫描除开中间图片框式可以看见外其他屏幕也是可以看见的,我的解决方法是添加一个View跟当前的这个View是在同一层次上不透明就可以了

    这个扫描中用到的框架有:

        AFNetworking    这个是用来网络请求的

        MBProgressHUD  这个是用来加载网络是的提示语的,例如网络加载中的时候,就会弹出一个框:正在加载中。。。等等!

  当然还有第三方的二维码扫描:ZXing和ZBar在github上都有下载

*/

时间: 2024-10-14 17:18:55

Ios二维码扫描(系统自带的二维码扫描)的相关文章

汽车配件红包二维码营销系统

红包二维码营销系统 一.二维码营销到底是怎么实现的- 目前二维码营销,大多数是通一品一码.一物一码二维码送红包营销系统实现,即给每个商品赋予一个唯一的二维码身份证,消费者通过扫码这个二维码即可领红包.积分.抽奖.卡券等. 红包二维码营销系统.红包二维码营销系统开发.红包二维码营销系统开发可找小编;136-0243-3692. 二.二维码送红包营销系统,如何做互动营销 二维码送红包营销系统的诞生,的确给快消饮品.母婴用品.酒类.茶叶.日用品等行业商家提供了新的盈利能力.如何盈利-正品科技二维码送红

二维码营销系统开发二维码营销系统模式详解

二维码营销系统开发(李想.185.6504.8478)二维码营销系统是什么?二维码营销系统有什么用?我为什么要需求购买二维码营销系统?二维码营销系统到底能给我带来解决什么问题?如果你想了解这些,那就跟随笔者一起往下看!市场营销是指,企业发现或挖掘准消费者需求,从整体氛围的营造以及自身产品形态的营造去推广和销售产品,主要是深挖产品的内涵,切合准消费者的需求,从而让消费者深刻了解该产品进而购买的过程.营销的目的是:产生可持续性收益.营销的本质是:抓住用户的需求,并快速把需求商品化.笔者下面介绍二维码

微信服务器与项目服务器的交互(关注功能、微信扫描带参数二维码)

<?php /** * wechat php test */ //define your token define("TOKEN", "txtj"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class wechatCallback

微信公众号扫描带参数二维码实现自动分组?

最近很多人都在问微信公众号扫描带参数二维码实现自动分组,通过微号帮平台操作实现,这个功能不止如此,微信二维码来源统计分析.微信带参数二维码统计分析.微信渠道二维码统计分析.自动生成微信二维码统计分析.微信海报二维码统计分析管理平台(地推派传单提供有效渠道分析).解决了微信公众号地推派单推广渠道跟踪的问题,可以实时进行监控派单推广渠道的扫码微信的关注,取消,新增,净增等相关数据,实时进行数据分析,为推广方向提供有了强有力的帮助和分析,同时对派单人员进行有效的考核,比如每个派单人员现场扫码的关注用户

二维码扫码积分系统定制开发

微信积分系统 二维码扫码积分系统定制开发找丽姐[158.1816.6626/电微]二维码营销模式系统定制开发 微信扫二维码营销系统开发 扫码领积分系统开发 一.如何实现扫二维码领红包功能? 1.使用扫描二维码领取红包对活动进行设置,包括红包数量.红包金额.促销地区.中奖概率等. 2.将生成的二维码赋到商品上面并赋涂层,一方面可以起到保证二维码的一次性,另一方面也可以引起消费者的好奇心. 3.通过手机微信打开扫一扫,扫码商品二维码关注公众号并领取红包,如果参与分享还可以获得抽奖的机会. 二.微信扫

带参数二维码的使用

带参数二维码的使用 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module

php微信开发之带参数二维码的使用

最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decoration

微信开发——带参数二维码的使用

---恢复内容开始--- 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Mod

微信公众平台开发(83) 生成带参数二维码

本文介绍在微信公众平台上如何使用高级接口开发生成带参数二维码的功能. 一.场景二维码 为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000).两种二维码分别适用于帐号绑定.用户来源统计等场景. 用户扫描带场景值二维码时,可能推送以下