這個簡單的實例實在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:selfaction:@selector(dismissOverlayView:)forControlEvents:UIControlEventTouchUpInside];
[reader.view addSubview:cancelButton];
}
//取消button方法
- (void)dismissOverlayView:(id)sender{
[self dismissModalViewControllerAnimated: YES];
}