自定义ZBAR,二维码扫描

转载前请注明出处。

效果图:
自定义ZBAR,二维码扫描

-(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

     

                   configZBAR_CFG_ENABLE

     

                       to0];

    

    //    [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 allocinit];

    

    labIntroudction.backgroundColor = [UIColor clearColor];

    

    labIntroudction.frame=CGRectMake(152029050);

    

    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(2039028040)];

    

    [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];

    

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值