[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文件的以下方法中加入如下: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //your code [ZBarReaderView class]; return YES; } 复制代码 6、在你需要使用扫描功能的ViewController.h文件添加如下: #import <UIKit/UIKit.h> #import "ZBarSDK.h" @interface ScanViewController : UIViewController<ZBarReaderViewDelegate> { ZBarReaderView *readerView; ZBarCameraSimulator *cameraSim; } @property (retain, nonatomic) IBOutlet ZBarReaderView *readerView; @end 复制代码 7、在你需要使用扫描功能的ViewController.m文件添加如下: #import "ScanViewController.h" @interface ScanViewController () @end @implementation ScanViewController @synthesize readerView; - (void)viewDidLoad { [super viewDidLoad]; //your code readerView.readerDelegate = self; [readerView setAllowsPinchZoom:YES]; if (TARGET_IPHONE_SIMULATOR) { cameraSim = [[ZBarCameraSimulator alloc] initWithViewController:self]; cameraSim.readerView = readerView; } } -(void)viewDidAppear:(BOOL)animated { [readerView start]; } -(void)viewDidDisappear:(BOOL)animated { [readerView stop]; } -(void) readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image { NSString *codeData = [[NSString alloc] init];; for (ZBarSymbol *sym in symbols) { codeData = sym.data; break; } UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"掃描結果" message:codeData delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; } -(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // 得到条形码结果 id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults]; ZBarSymbol *symbol = nil; for(symbol in results) break; //获得到条形码 //NSString *dataNum=symbol.data; //扫描界面退出 [picker dismissModalViewControllerAnimated: YES]; } 复制代码 8、至于需要如何美化你的扫描界面或者其他的使用方式,将在以后的帖子中继续探讨。 9、最终界面上一张粗糙的模拟器截图: 最后感谢苏飞老大提供交流平台,祝愿这个论坛越办越红火,希望大家多多交流。 By: Koson QQ:674946329 QQ邮箱:674946329@qq.com