标签:des cWeb style class blog code
一、下载ZBarSDK, 加入到工程中。
二、配置TARGETS和PROJECT
三、设置Link Binary With Libraries
四、 .m文件
#import "MQMainViewController.h"
#import "ZBarSDK.h"
@interface MQMainViewController ()
@end
@implementation MQMainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self addCaptureButton];
}
#pragma mark - add btn
- (void)addCaptureButton
{
CGRect frame = CGRectMake(0, 0, 100, 100);
UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = frame;
[btn setTitle:@"拍照" forState:UIControlStateNormal];
btn.backgroundColor = [UIColor clearColor];
btn.tag = 1111;
[btn addTarget:self action:@selector(onClickCaptureButton:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
-(IBAction)onClickCaptureButton:(id)sender
{
[self takePicture];
}
- (void)takePicture
{
ZBarReaderViewController * reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
reader.wantsFullScreenLayout = NO; //非全屏
reader.showsZBarControls = NO; //隐藏底部控制按钮
[self setOverlayPickerView:reader]; //设置自己定义的界面
ZBarImageScanner * scanner = reader.scanner;
[scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
//reader.showsZBarControls = YES;
[self presentViewController:reader animated:YES completion:nil];
}
- (void)setOverlayPickerView:(ZBarReaderViewController *)reader
{
//清除原有控件
for (UIView * temp in [reader.view subviews])
{
for (UIButton *button in [temp subviews])
{
if ([button isKindOfClass:[UIButton class]])
{
[button removeFromSuperview];
}
}
for (UIToolbar * toolbar in [temp subviews])
{
if ([toolbar isKindOfClass:[UIToolbar class]])
{
[toolbar setHidden:YES];
[toolbar removeFromSuperview];
}
}
}
//画中间的基准线
UIView * line = [[UIView alloc] initWithFrame:CGRectMake(40, 220, 240, 1)];
line.backgroundColor = [UIColor redColor];
[reader.view addSubview:line];
//[line release];
//最上部view
UIView* upView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)];
upView.alpha = 0.3;
upView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:upView];
//用于说明的label
UILabel * labIntroudction= [[UILabel alloc] init];
labIntroudction.backgroundColor = [UIColor clearColor];
labIntroudction.frame=CGRectMake(15, 20, 290, 50);
labIntroudction.numberOfLines=2;
labIntroudction.textColor=[UIColor whiteColor];
labIntroudction.text=@"将二维码图像置于矩形方框内,离手机摄像头10CM左右,系统会自动识别。";
[upView addSubview:labIntroudction];
//[labIntroudction release];
//[upView release];
//左侧的view
UIView * leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 20, 280)];
leftView.alpha = 0.3;
leftView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:leftView];
//[leftView release];
//右侧的view
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(300, 80, 20, 280)];
rightView.alpha = 0.3;
rightView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:rightView];
//[rightView release];
//底部view
UIView * downView = [[UIView alloc] initWithFrame:CGRectMake(0, 360, 320, 220)];
downView.alpha = 0.3;
downView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:downView];
//[downView release];
//用于取消操作的button
UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cancelButton.alpha = 0.4;
[cancelButton setFrame:CGRectMake(20, 390, 280, 40)];
[cancelButton setTitle:@"取消" forState:UIControlStateNormal];
[cancelButton.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
[cancelButton addTarget:self action:@selector(dismissOverlayView:)forControlEvents:UIControlEventTouchUpInside];
[reader.view addSubview:cancelButton];
}
- (void) imagePickerController:(UIImagePickerController*) reader didFinishPickingMediaWithInfo:(NSDictionary*) info
{
id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];
ZBarSymbol * symbol;
for (symbol in results) {
break;
}
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"解码内容" message:symbol.data delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
[alertView show];
}
//取消button方法
- (void)dismissOverlayView:(id)sender
{
[self dismissModalViewControllerAnimated: YES];
}
@end
五、 总结
以上程序,在IPHONE4 (IOS7) IPHONE5(IOS6) 测试, 可以扫码一/二维码。
六、 记录
在网上浏览,ZXing也是可以扫码,二维码功能。
测试,扫码二维码的速度,视乎比ZBar要快!
改局部代码后,也可扫码一维码,但,识别出的信息,不够准确!
尝试,在XCODE上配置,也挺费劲~ 待续吧 ...
实现扫描 一/二维码 -- ZBar开源SDK,布布扣,bubuko.com
标签:des cWeb style class blog code
原文地址:http://www.cnblogs.com/iCodePhone/p/3805533.html