转载前请注明出处。
效果图:
-(void)sysBtn
{
NSLog(@"2121");
//重写新的扫描UI
//覆盖在原有ZbarReader的上一层
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
//非全屏
reader.edgesForExtendedLayout = 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];
[self presentViewController:reader animated:YES completion:nil];
}
- (void)imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<</span>NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
imageView.image = [info objectForKey: UIImagePickerControllerOriginalImage];
//[reader dismissModalViewControllerAnimated: YES];
[reader dismissViewControllerAnimated:YES completion:nil];
//判断是否包含 头'http:'
NSString *regex = @"http+:[^\\s]*";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
//判断是否包含 头'ssid:'
NSString *ssid = @"ssid+:[^\\s]*";;
NSPredicate *ssidPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",ssid];
label.text = symbol.data ;
// NSLog(@"%@",symbol.data);
if ([predicate evaluateWithObject:label.text]) {
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:nil
message:@"It will use the browser to this URL。"
delegate:nil
cancelButtonTitle:@"Close"
otherButtonTitles:@"Ok", nil];
alert.delegate = self;
alert.tag=1;
[alert show];
}
else if([ssidPre evaluateWithObject:label.text]){
NSArray *arr = [label.text componentsSeparatedByString:@";"];
NSArray * arrInfoHead = [[arr objectAtIndex:0] componentsSeparatedByString:@":"];
NSArray * arrInfoFoot = [[arr objectAtIndex:1] componentsSeparatedByString:@":"];
label.text=
[NSString stringWithFormat:@"ssid: %@ \n password:%@",
[arrInfoHead objectAtIndex:1],[arrInfoFoot objectAtIndex:1]];
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:label.text
message:@"The password is copied to the clipboard , it will be redirected to the network settings interface"
delegate:nil
cancelButtonTitle:@"Close"
otherButtonTitles:@"Ok", nil];
alert.delegate = self;
alert.tag=2;
[alert show];
UIPasteboard *pasteboard=[UIPasteboard generalPasteboard];
// 然后,可以使用如下代码来把一个字符串放置到剪贴板上:
pasteboard.string = [arrInfoFoot objectAtIndex:1];
}
}
- (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];
//最上部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];
//左侧的view
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 20, 280)];
leftView.alpha = 0.3;
leftView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:leftView];
//右侧的view
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(300, 80, 20, 280)];
rightView.alpha = 0.3;
rightView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:rightView];
//底部view
UIView * downView = [[UIView alloc] initWithFrame:CGRectMake(0, 360, 320,self.view.frame.size.height-rightView.frame.size.height-upView.frame.size.height)];
downView.alpha = 0.3;
downView.backgroundColor = [UIColor blackColor];
[reader.view addSubview:downView];
//用于取消操作的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 dismissViewControllerAnimated:YES completion:nil];
}