作者:朱克锋
邮箱:zhukefeng@iboxpay.com
转载请注明出处:http://blog.csdn.net/linux_zkf
这个简单的实例实在ZBarReaderViewController的view层上再加一层用于定义自己的界面
- (void)QRscan { ZBarReaderViewController *reader = [ZBarReaderViewController new]; reader.readerDelegate = self; //非全屏 reader.wantsFullScreenLayout = NO; //隐藏底部控制按钮 reader.showsZBarControls = NO; //设置自己定义的界面 [self setOverlayPickerView:reader]; ZBarImageScanner *scanner = reader.scanner; [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0]; [self presentModalViewController: reader animated: YES]; [reader release]; } - (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, 120)]; 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]; } //取消button方法 - (void)dismissOverlayView:(id)sender{ [self dismissModalViewControllerAnimated: YES]; }