ZBar扫码

来源:互联网 发布:淘宝宝贝评价没有了 编辑:程序博客网 时间:2024/04/18 13:24

导入ZBarSDK文件并引入一下框架

    AVFoundation.framework

    CoreMedia.framework

    CoreVideo.framework

    QuartzCore.framework

    libiconv.dylib

    引入头文件#import “ZBarSDK.h”即可使用

    当找到条形码时,会执行代理方法

废话不多说,直接上代码

//

//  LQXZBarViewController.m

//  erweim

//

//  Created by 刘祺旭 on 15/9/9.

//  Copyright (c) 2015刘祺旭. All rights reserved.

//


#import "LQXZBarViewController.h"


@interface LQXZBarViewController ()

{

    BOOL is_Anmotion;

    ZBarReaderView*lqxreadview;

    UIImageView*lqxscanZomeBack;

    UIImageView*lqxreadLineView;

}

@end


@implementation LQXZBarViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    [selfInitScan];

    [selfloopDrawLine];

}

#pragma mark 初始化扫描

- (void)InitScan

{

    lqxreadview = [ZBarReaderViewnew];

    lqxreadview.backgroundColor = [UIColorclearColor];

    lqxreadview.frame =CGRectMake(187.5 -150, 333.5 -150, 300,300);

    lqxreadview.readerDelegate =self;

    lqxreadview.allowsPinchZoom =YES;//使用手势变焦

    lqxreadview.trackingColor = [UIColorredColor];

    lqxreadview.showsFPS =NO;// 显示帧率  YES 显示  NO不显示

    lqxreadview.scanCrop =CGRectMake(50,50, 50,50);//将被扫描的图像的区域

    

    UIImage *hbImage=[UIImageimageNamed:@".png"];

    lqxscanZomeBack=[[UIImageViewalloc] initWithImage:hbImage];

    //添加一个背景图片

    CGRect mImagerect=CGRectMake((lqxreadview.frame.size.width-200)/2.0, (lqxreadview.frame.size.height-200)/2.0,200, 200);

    [lqxscanZomeBacksetFrame:mImagerect];

    lqxreadview.scanCrop = [selfgetScanCrop:mImagerect readerViewBounds:lqxreadview.bounds];//将被扫描的图像的区域

    

    [lqxreadviewaddSubview:lqxscanZomeBack];

    [lqxreadviewaddSubview:lqxreadLineView];

    [self.viewaddSubview:lqxreadview];

    [lqxreadviewstart];

    

}


#pragma mark 获取扫描区域

-(CGRect)getScanCrop:(CGRect)rect readerViewBounds:(CGRect)readerViewBounds

{

    CGFloat x,y,width,height;

    

    x = rect.origin.x / readerViewBounds.size.width;

    y = rect.origin.y / readerViewBounds.size.height;

    width = rect.size.width / readerViewBounds.size.width;

    height = rect.size.height / readerViewBounds.size.height;

    

    returnCGRectMake(x, y, width, height);

}


#pragma mark 扫描动画

-(void)loopDrawLine

{

    

    CGRect  rect =CGRectMake(lqxscanZomeBack.frame.origin.x,lqxscanZomeBack.frame.origin.y,lqxscanZomeBack.frame.size.width,2);

    if (lqxreadLineView) {

        [lqxreadLineViewremoveFromSuperview];

    }

    lqxreadLineView = [[UIImageViewalloc] initWithFrame:rect];

    lqxreadLineView.backgroundColor = [UIColorredColor];

    [lqxreadLineViewsetImage:[UIImageimageNamed:@"线.jpg"]];

    [UIViewanimateWithDuration:3.0

                          delay:0.0

                        options:UIViewAnimationOptionCurveEaseIn

                     animations:^{

                         //修改fream的代码写在这里

                         lqxreadLineView.frame =CGRectMake(lqxscanZomeBack.frame.origin.x,lqxscanZomeBack.frame.origin.y+lqxscanZomeBack.frame.size.height,lqxscanZomeBack.frame.size.width,2);

                         [lqxreadLineViewsetAnimationRepeatCount:0];

                         

                     }

                     completion:^(BOOL finished){

                         if (!is_Anmotion) {

                         

                             [selfloopDrawLine];

                         }

                         

                     }];

    

    [lqxreadviewaddSubview:lqxreadLineView];

    

}

#pragma mark 获取扫描结果

- (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)];

    if (zbar_symbol_get_type(symbol) ==ZBAR_QRCODE) {

        

        [[UIApplicationsharedApplication] openURL:[NSURLURLWithString:symbolStr]];

    }

    

    for (ZBarSymbol *symbolin symbols) {

        break;

    }

    

    [readerView stop];

    is_Anmotion =YES;

    [readerView removeFromSuperview];

    

    

}

- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


/*

#pragma mark - Navigation


// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/


@end


0 0
原创粉丝点击