假设你不知道ZBarSDK怎么用,请下载demo

http://download.csdn.net/detail/u013686641/7858917

假设你已经配置好ZBarSDK 。那么以下这个类能够直接用

以下是效果图

//

//  头文件

//  TestProject

//

#import <UIKit/UIKit.h>

#import "ZBarSDK.h"

@interface yxpQrCode :UIViewController

@end

//

//  实现文件

//  TestProject

//

#import "yxpQrCode.h"

#define SCANVIEW_EdgeTop
40.0

#define SCANVIEW_EdgeLeft
50.0

#define TINTCOLOR_ALPHA
0.2  //浅色透明度

#define DARKCOLOR_ALPHA
0.5  //深色透明度

@interfaceyxpQrCode ()<ZBarReaderViewDelegate>

{

UIView *_QrCodeline;

NSTimer *_timer;

//设置扫描画面

UIView *_scanView;

ZBarReaderView *_readerView;

}

@end

@implementation yxpQrCode

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle
*)nibBundleOrNil

{

self = [superinitWithNibName:nibNameOrNil
bundle:nibBundleOrNil];

if (self) {

// Custom initialization

}

returnself;

}

- (void)viewDidLoad

{

[superviewDidLoad];

self.title=@"扫描二维码";

//初始化扫描界面

[selfsetScanView];

_readerView= [[ZBarReaderViewalloc]init];

,
VIEW_WIDTH);

_readerView.tracksSymbols=NO;

_readerView.readerDelegate =self;

[_readerViewaddSubview:_scanView];

//关闭闪光灯

;

[self.viewaddSubview:_readerView];

//扫描区域

//readerView.scanCrop =

[_readerViewstart];

[selfcreateTimer];

}

#pragma mark -- ZBarReaderViewDelegate

-(void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet
*)symbols fromImage:(UIImage *)image

{

constzbar_symbol_t *symbol =zbar_symbol_set_first_symbol(symbols.zbarSymbolSet);

NSString *symbolStr = [NSStringstringWithUTF8String:
zbar_symbol_get_data(symbol)];

//推断是否包括 头'http:'

NSString *regex =@"http+:[^\\s]*";

NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"SELF
MATCHES %@",regex];

UIAlertView *alertView=[[UIAlertViewalloc]
initWithTitle:@""message:symbolStr
delegate:nilcancelButtonTitle:@"取消"otherButtonTitles:nil];

[alertViewshow];

//推断是否包括 头'ssid:'

NSString *ssid =@"ssid+:[^\\s]*";;

NSPredicate *ssidPre = [NSPredicatepredicateWithFormat:@"SELF
MATCHES %@",ssid];

if ([predicate
evaluateWithObject:symbolStr]) {

}

else
if([ssidPreevaluateWithObject:symbolStr]){

NSArray *arr = [symbolStr
componentsSeparatedByString:@";"];

]componentsSeparatedByString:@":"];

]componentsSeparatedByString:@":"];

symbolStr = [NSStringstringWithFormat:@"ssid:
%@ \n password:%@",

[arrInfoHead],[arrInfoFoot]];

UIPasteboard *pasteboard=[UIPasteboardgeneralPasteboard];

//然后,能够使用例如以下代码来把一个字符串放置到剪贴板上:

pasteboard.];

}

}

//二维码的扫描区域

- (void)setScanView

{

_scanView=[[UIViewalloc]
initWithFrame,
)];

_scanView.backgroundColor=[UIColorclearColor];

//最上部view

UIView* upView = [[UIViewalloc]
,,
VIEW_WIDTH,SCANVIEW_EdgeTop)];

upView.alpha =TINTCOLOR_ALPHA;

upView.backgroundColor = [UIColorblackColor];

[_scanViewaddSubview:upView];

//左側的view

UIView *leftView = [[UIViewalloc]
,SCANVIEW_EdgeTop,
SCANVIEW_EdgeLeft*SCANVIEW_EdgeLeft)];

leftView.alpha =TINTCOLOR_ALPHA;

leftView.backgroundColor = [UIColorblackColor];

[_scanViewaddSubview:leftView];

/******************中间扫描区域****************************/

UIImageView *scanCropView=[[UIImageViewalloc]
initWithFrame:CGRectMake(SCANVIEW_EdgeLeft,SCANVIEW_EdgeTop,
VIEW_WIDTH*SCANVIEW_EdgeLeft)];

//scanCropView.image=[UIImage imageNamed:@""];

scanCropView.layer.borderColor=[UIColorgetThemeColor].CGColor;

scanCropView.layer.borderWidth=2.0;

scanCropView.backgroundColor=[UIColorclearColor];

[_scanViewaddSubview:scanCropView];

//右側的view

UIView *rightView = [[UIViewalloc]
initWithFrame:CGRectMake(VIEW_WIDTH-SCANVIEW_EdgeLeft,SCANVIEW_EdgeTop,
SCANVIEW_EdgeLeft*SCANVIEW_EdgeLeft)];

rightView.alpha =TINTCOLOR_ALPHA;

rightView.backgroundColor = [UIColorblackColor];

[_scanViewaddSubview:rightView];

//底部view

UIView *downView = [[UIViewalloc]
*SCANVIEW_EdgeLeft+SCANVIEW_EdgeTop,VIEW_WIDTH,
VIEW_HEIGHT)];

//downView.alpha = TINTCOLOR_ALPHA;

downView.backgroundColor = [[UIColorblackColor]
colorWithAlphaComponent:TINTCOLOR_ALPHA];

[_scanViewaddSubview:downView];

//用于说明的label

UILabel *labIntroudction= [[UILabelalloc]
init];

labIntroudction.backgroundColor = [UIColorclearColor];

labIntroudction.,,
);

labIntroudction.;

labIntroudction.font=[UIFontsystemFontOfSize:15.0];

labIntroudction.textAlignment=NSTextAlignmentCenter;

labIntroudction.textColor=[UIColorwhiteColor];

labIntroudction.text=@"将二维码对准方框,就可以自己主动扫描";

[downViewaddSubview:labIntroudction];

UIView *darkView = [[UIViewalloc]
, downView.frame.size.height-100.0,VIEW_WIDTH,
100.0)];

darkView.backgroundColor = [[UIColorblackColor] 
colorWithAlphaComponent:DARKCOLOR_ALPHA];

[downViewaddSubview:darkView];

//用于开关灯操作的button

UIButton *openButton=[[UIButtonalloc]
,,
300.0, 40.0)];

[openButtonsetTitle:@"开启闪光灯" forState:UIControlStateNormal];

[openButton setTitleColor:[UIColorwhiteColor]
forState:UIControlStateNormal];

openButton.titleLabel.textAlignment=NSTextAlignmentCenter;

openButton.backgroundColor=[UIColorgetThemeColor];

openButton.titleLabel.font=[UIFontsystemFontOfSize:22.0];

[openButton addTarget:selfaction:@selector(openLight)forControlEvents:UIControlEventTouchUpInside];

[darkViewaddSubview:openButton];

//画中间的基准线

_QrCodeline = [[UIViewalloc]
initWithFrame:CGRectMake(SCANVIEW_EdgeLeft,SCANVIEW_EdgeTop,
VIEW_WIDTH)];

_QrCodeline.backgroundColor = [UIColorgetThemeColor];

[_scanViewaddSubview:_QrCodeline];

}

- (void)openLight

{

)
{

;

}else

{

;

}

}

- (void)viewWillDisappear:(BOOL)animated

{

[superviewWillDisappear:animated];

)
{

;

}

[selfstopTimer];

[_readerViewstop];

}

//二维码的横线移动

- (void)moveUpAndDownLine

{

CGFloat Y=_QrCodeline.frame.origin.y;

//CGRectMake(SCANVIEW_EdgeLeft, SCANVIEW_EdgeTop, VIEW_WIDTH-2*SCANVIEW_EdgeLeft, 1)]

*SCANVIEW_EdgeLeft+SCANVIEW_EdgeTop==Y){

[UIView beginAnimations:@"asa" context:nil];

[UIView setAnimationDuration:];

_QrCodeline.frame=CGRectMake(SCANVIEW_EdgeLeft, SCANVIEW_EdgeTop, VIEW_WIDTH-*SCANVIEW_EdgeLeft,);

[UIView commitAnimations];

}elseif(SCANVIEW_EdgeTop==Y){

[UIView beginAnimations:@"asa" context:nil];

[UIView setAnimationDuration:];

_QrCodeline.frame=CGRectMake(SCANVIEW_EdgeLeft, VIEW_WIDTH-*SCANVIEW_EdgeLeft+SCANVIEW_EdgeTop, VIEW_WIDTH-*SCANVIEW_EdgeLeft,);

[UIView commitAnimations];

}

}

- (void)createTimer

{

//创建一个时间计数

_timer=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(moveUpAndDownLine)
userInfo:nil repeats:YES];

}

- (void)stopTimer

{

if ([_timer isValid] ==
YES) {

[_timer invalidate];

_timer =nil;

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end


二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法的更多相关文章

  1. 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)

    本文将介绍基于Senparc.Weixin微信开发框架来实现网页授权来获取用户基本信息.先生成包含授权及回调url信息的二维码:用户用微信扫描之后,被要求授权以获取Ta的用户基本信息:用户授权后,通过 ...

  2. ios二维码扫描插件,适配当前主流扫描软件,自定义扫描界面。

            二维码介绍: 二维码(QR(Quick Response)code),又称二维条码,最早起源于日本. 它是用特定的几何图形按一定规律在平面(二维方向)上分布的黑白相间的图形,是所有信息 ...

  3. Atitit 常用二维码对比(QR、PDF417、DM、汉信码 Aztec code maxicode

    Atitit 常用二维码对比(QR.PDF417.DM.汉信码 Aztec code maxicode DM码则更"小",可在仅仅25mm²的面积上编码30个数字.但也就是因为太小 ...

  4. IOS开发小功能2:二维码扫描界面的设计(横线上下移动)

    效果图如上,实现的是一个二维码扫描界面. 下面我贴出线条上下移动的代码,至于二维码的代码是用的第三方库. 首先是整体的结构: 注意下面的库文件一个都不能少,否则会报错. TLTiltHighlight ...

  5. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍   我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...

  6. QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)

    原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1) 提要:很多公司为商业宣传之需,常将企业LOGO加入二维码中,但如果LOGO遮挡区域足够地大,二维码就变得无法识别.那么,有没有一 ...

  7. QRCode二维码生成方案及其在带LOGO型二维码中的应用(2)

    原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(2) 续前:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)  http://blog.csdn.net/johnsu ...

  8. 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享

    http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

  9. 使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之三 角色管理源码分享    在上两篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

随机推荐

  1. C语言实现面向对象(转)

    1.引言 面向对象编程(OOP)并不是一种特定的语言或者工具,它只是一种设计方法.设计思想. 它表现出来的三个最基本的特性就是封装.继承与多态. 很多面向对象的编程语言已经包含这三个特性了,例如 Sm ...

  2. 样本方差的无偏估计与(n-1)的由来

    一.无偏估计 所谓总体参数估计量的无偏性指的是,基于不同的样本,使用该估计量可算出多个估计值,但它们的平均值等于被估参数的真值. 在某些场合下,无偏性的要求是有实际意义的.例如,假设在某厂商与某销售商 ...

  3. js内置对象——Math

    Math()是JavaScript的内置对象(对于内置对象的理解,会单独写文章说明),包含了很多数学相关的方法: 常用方法: 1 Math.ceil(x) //取最近的最大整数返回 2 Math.fl ...

  4. java中的instanceof用法

    Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:     ...

  5. MySQL主从复制与读写分离(非原创,谢绝膜拜)

    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中, ...

  6. (转)Epoll模型详解

    1. 内核中提高I/O性能的新方法epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll.要使用epoll只需要这三个系统调 用:epoll_create(2),  ...

  7. 【SPOJ-GSHOP】Rama and Friends【贪心】【细节】

    题意: 给出n个非严格递增的整数(可能有负数),必须操作k次.每次能够把当中一个数变为它的相反数,使得终于的数列和最大. 输出这个最大和. 考验怎样出坑数据卡自己的程序... #include < ...

  8. UnityShader实例13:屏幕特效之均值模糊(Box Blur)

    均值模糊(Box Blur) 概述 因为公司手游项目需求.须要一个适合手机平台的模糊效果,同一时候须要开放一个參数便于调节模糊值.我首先想到的就是ps里面的均值模糊. 查资料能够知道均值模糊是一种高速 ...

  9. Another app is currently holding the yum lock; waiting for it to exit…

    yum被锁定无法使用,错误信息截图如下:解决方法:rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了

  10. Nginx访问VM虚拟机CentOS 7系统与本地Windows系统共享目录403

    用VMware安装了CentOS7系统,并搭建了Nginx,MySQL,PHP的web项目运行环境,为了方便Windows本地主机进行程序调试把Windows本地项目目录共享到了虚拟机CentOS中的 ...