您的位置:首页 > 其它

Zbar的使用隐藏toolbar及图片作为扫描页面边框

2012-06-04 17:14 169 查看
首先下载ZBarSDK,静态库libzbar.a我是取现成已经编译好的。

下面是代码的实现:

1. CommodityDetailsViewController.h 文件

#import <UIKit/UIKit.h>
#import "ZBarReaderViewController.h"

#import "CommodityDetailsViewController.h"

@interface SearchViewCommon : UIViewController<ZBarReaderDelegate> {

ZBarReaderViewController *reader;

UIButton *backBtn;
UIToolbar *toolBar;

}

- (IBAction)scanPressed;//扫描事件

@end

CommodityDetailsViewController.m文件

@implementation SearchViewCommon

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {

toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 520, 320, 0)];
[toolBar setBarStyle:UIBarStyleBlackTranslucent];
backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
backBtn.frame = CGRectMake(140,480-125, 51, 51);
//backBtn.frame= CGRectMake(0, 480-44,230, 44);
[backBtn addTarget:self action:@selector(dismissReader) forControlEvents:UIControlEventTouchUpInside];
UIImage *image_back = [UIImage imageNamed:@"QR_return(320).png"];
[backBtn setBackgroundImage:image_back forState:UIControlStateNormal];
[toolBar addSubview:backBtn];
}
return self;
}

- (void)viewDidLoad {

[super viewDidLoad];
}

#pragma mark -
#pragma mark 二维码扫描
- (IBAction)scanPressed {

[OcjStatusUtility hidesTabBar:YES animated:YES ];

reader = [[ZBarReaderViewController alloc]init];
reader.view.frame = CGRectMake(0, 0, 320, 480);

reader.showsZBarControls = NO;
reader.enableCache = YES;
toolBar.frame = CGRectMake(0, 500, 320, 0);

for (UIView *temp in [reader.view subviews]) {

for (UIButton *button in [temp subviews]) {
if ([button isKindOfClass:[UIButton class]]) {

[button removeFromSuperview];

}
}

// for (UITabBar *tabbar in [temp subviews]) {
//
// if ([tabbar isKindOfClass:[UITabBar class]]) {
//
// [tabbar setHidden:YES];
// [tabbar removeFromSuperview];
//
// }
//
// }

for (UIToolbar *toolbar in [temp subviews]) { //循环遍历给力

if ([toolbar isKindOfClass:[UIToolbar class]]) {

[toolbar setHidden:YES];
}
}
}

if ([kIphoneVersion floatValue]>4.4) { //经过测试ios版本底的情况下不能直接套用图片,使用边框效果只能自己画上去个线条(view替代,并设置 //透明度)。
UIView *bgview = [[UIView alloc] initWithFrame:CGRectMake(28, 70, 267, 268)];
//bgview.alpha = 0.3;
bgview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"QR_bg(320).png"]];
[reader.view addSubview:bgview];
[bgview release];

UILabel * labIntroudction= [[UILabel alloc] init];
labIntroudction.backgroundColor = [UIColor clearColor];
labIntroudction.frame=CGRectMake(15, 20, 290, 50);
labIntroudction.numberOfLines=2;
labIntroudction.font=kFontNameTwo;
labIntroudction.textColor=[UIColor whiteColor];
labIntroudction.text=@"将二维码图像置于矩形外,离手机摄像头10CM左右,软件会自动识别。";
[reader.view addSubview:labIntroudction];
[labIntroudction release];
}else {

UIView* line = [[UIView alloc] initWithFrame:CGRectMake(60, 240, 200, 1)];
line.backgroundColor = [UIColor redColor];
[reader.view addSubview:line];
[line release];

UIView* upView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)];
upView.alpha = 0.3;
upView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:upView];

UILabel * labIntroudction= [[UILabel alloc] init];
labIntroudction.backgroundColor = [UIColor clearColor];
labIntroudction.frame=CGRectMake(15, 20, 290, 50);
labIntroudction.numberOfLines=2;
labIntroudction.font=kFontNameTwo;
labIntroudction.textColor=[UIColor whiteColor];
labIntroudction.text=@"将二维码图像置于矩形外,离手机摄像头10CM左右,软件会自动识别。";
[upView addSubview:labIntroudction];
[labIntroudction release];
[upView release];

UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 37, 232)];
leftView.alpha = 0.3;
leftView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:leftView];
[leftView release];

UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(288, 80, 37, 232)];
rightView.alpha = 0.3;
rightView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:rightView];
[rightView release];

UIView * downView = [[UIView alloc] initWithFrame:CGRectMake(0, 312, 320, 120)];
downView.alpha = 0.3;
downView.backgroundColor = [UIColor blackColor];
//[downView addSubview:backBtn];
[reader.view addSubview:downView];
[downView release];

}

[reader.view addSubview:backBtn];
[self.fatherViewController presentModalViewController: reader
animated: YES];
reader.readerDelegate = self;
reader.supportedOrientationsMask = UIInterfaceOrientationPortrait;
reader.showsZBarControls = NO;

ZBarImageScanner *scanner = reader.scanner;
// TODO: (optional) additional reader configuration here

// EXAMPLE: disable rarely used I2/5 to improve performance
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];

// present and release the controller

//[reader release];

}

#pragma mark -
#pragma mark 以下是将扫描部分代码整合

-(void)dismissReader {

[toolBar removeFromSuperview];
// [OcjStatusUtility hidesTabBar:NO animated:YES];
[reader dismissModalViewControllerAnimated:YES];
}

#pragma mark -
#pragma mark - ZBarDelegate

- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{

// ADD: get the decode results
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
// EXAMPLE: just grab the first barcode
break;

// EXAMPLE: do something useful with the barcode data
NSString *str = [NSString stringWithFormat:@"%@",symbol.data];

[self.shoppingCarDao qRCodeScanning:str];//得到扫描的字符串 str;

// NSString* sknStr = [[[NSString alloc] initWithString:symbol.data] autorelease];
// [self performSelector:@selector(saveScanKey:) withObject:sknStr];
// [self performSelector:@selector(requestData:) withObject:sknStr];

// // EXAMPLE: do something useful with the barcode image
// resultImage.image = [info objectForKey: UIImagePickerControllerOriginalImage];
// backgroundView.hidden = YES;
// resultImage.hidden = NO;

// ADD: dismiss the controller (NB dismiss from the *reader*!)

//[reader dismissModalViewControllerAnimated:YES];
}

- (void) imagePickerControllerDidCancel: (UIImagePickerController*) reader
{
//[reader dismissModalViewControllerAnimated: YES];
}

- (void) readerControllerDidFailToRead: (ZBarReaderController*) reader
withRetry: (BOOL) retry
{

//if(!retry)
//[reader dismissModalViewControllerAnimated: YES];
}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];
}

- (void)viewDidUnload {

}
- (void)dealloc {

[super dealloc];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: