[IPHONE] iOS使用ZbarSDK实现扫描二维码以及条形码功能

来源:互联网 发布:网络大电影分账比例 编辑:程序博客网 时间:2024/04/29 14:00

[IPHONE] iOS使用ZbarSDK实现扫描二维码以及条形码功能 

[复制链接]  
Koson
  • TA的每日心情
    开心
    2014-11-24 14:45
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    已加入sufeinet总群

    跳转到指定楼层
    楼主
     发表于 2012-12-27 14:13:46 | 只看该作者 |只看大图 回帖奖励
    本帖最后由 Koson 于 2014-11-21 16:30 编辑

    在自己的iPhone App中,多个Project都使用到了扫描二维码的地方,这个ZbarSDK很强大,但是界面却的确很丑,经过多次的开发经验,总算可以很好的驾驭这个SDK了。下面粗略讲一讲如何使用这个ZbarSDK来实现扫描二维码吧,读者有任何意见可以通过QQ或者Email和我一同交流。QQ:674946329,Email便是QQ邮箱了。看代码吧。
    1、
    去下载SDK:
    http://zbar.sourceforge.net/iphone/index.html
    官方教程:
    http://zbar.sourceforge.net/iphone/sdkdoc/tutorial.html

    2、新建你的IOS Project。
    3、导入ZbarSDK,直接拖动你下载的ZbarSDK到你的项目,并且选择copy选项。

    4、添加如下framework

    5、在appDelegate文件的以下方法中加入如下:
    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    2. {
    3.     //your code
    4.     [ZBarReaderView class];
    5.     return YES;
    6. }
    复制代码
    6、在你需要使用扫描功能的ViewController.h文件添加如下:
    1. #import <UIKit/UIKit.h>
    2. #import "ZBarSDK.h"
    3. @interface ScanViewController : UIViewController<ZBarReaderViewDelegate>
    4. {
    5.     ZBarReaderView *readerView;
    6.     ZBarCameraSimulator *cameraSim;
    7. }
    8. @property (retain, nonatomic) IBOutlet ZBarReaderView *readerView;
    9. @end
    复制代码
    7、在你需要使用扫描功能的ViewController.m文件添加如下:
    1. #import "ScanViewController.h"
    2. @interface ScanViewController ()
    3. @end
    4. @implementation ScanViewController
    5. @synthesize readerView;
    6. - (void)viewDidLoad
    7. {
    8.     [super viewDidLoad];    
    9.     //your code    
    10.     readerView.readerDelegate = self;
    11.     [readerView setAllowsPinchZoom:YES];
    12.     if (TARGET_IPHONE_SIMULATOR) {
    13.         cameraSim = [[ZBarCameraSimulator alloc] initWithViewController:self];
    14.         cameraSim.readerView = readerView;
    15.     }
    16. }
    17. -(void)viewDidAppear:(BOOL)animated
    18. {
    19.     [readerView start];
    20. }
    21. -(void)viewDidDisappear:(BOOL)animated
    22. {
    23.     [readerView stop];
    24. }

    25. -(void) readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image
    26. {
    27.     NSString *codeData = [[NSString alloc] init];;
    28.     for (ZBarSymbol *sym in symbols) {
    29.         codeData = sym.data;
    30.         break;
    31.     }
    32.     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"掃描結果" message:codeData delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    33.     [alert show];
    34. }

    35. -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    36. {
    37.     // 得到条形码结果
    38.     id<NSFastEnumeration> results =
    39.     [info objectForKey: ZBarReaderControllerResults];
    40.     ZBarSymbol *symbol = nil;
    41.     for(symbol in results)
    42.         break;
    43.     //获得到条形码
    44.     //NSString *dataNum=symbol.data;
    45.     //扫描界面退出
    46.     [picker dismissModalViewControllerAnimated: YES];
    47. }
    复制代码
    8、至于需要如何美化你的扫描界面或者其他的使用方式,将在以后的帖子中继续探讨。
    9、最终界面上一张粗糙的模拟器截图:

    最后感谢苏飞老大提供交流平台,祝愿这个论坛越办越红火,希望大家多多交流。
    By: Koson 
    QQ:674946329
    QQ邮箱:674946329@qq.com
    0 0
    原创粉丝点击