iOS高仿新版微信扫一扫源码

       iOS版本高仿新版微信V8.0.6扫一扫。支持全屏扫码,支持识别多个二维码,支持选择指定二维码,支持从相册选取二维码,支持光线暗打开手电筒。无需多余的文件,一个Controller即可搞定,可继承,可复用,可自定义。

       部分代码如下:

/**
 * 根据光线强度自动显示手电筒图标
 */
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CFDictionaryRef metadataDict = CMCopyDictionaryOfAttachments(NULL, sampleBuffer, kCMAttachmentMode_ShouldPropagate);
    NSDictionary *metadata = [[NSMutableDictionary alloc] initWithDictionary:(__bridge NSDictionary*)metadataDict];
    CFRelease(metadataDict);
    NSDictionary *exifMetadata = [[metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy];
    float brightnessValue = [[exifMetadata objectForKey:(NSString *)kCGImagePropertyExifBrightnessValue] floatValue];
    dispatch_async(dispatch_get_main_queue(), ^{
        if (brightnessValue<brightnessThresholdValue) {
            self.flashBtn.hidden = NO;
        }else{
            if (!self.flashBtn.isSelected) {
                self.flashBtn.hidden = YES;
            }
        }
    });
}
/**
 * 识别结果处理
 */
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection {
    if (metadataObjects != nil && metadataObjects.count > 0) {
        [self stopRunning];
        UIImpactFeedbackGenerator*impactLight = [[UIImpactFeedbackGenerator alloc]initWithStyle:UIImpactFeedbackStyleLight];
        [impactLight impactOccurred];
        
        UIView * maskView = [self maskView:metadataObjects.count > 1];
        maskView.alpha = 0;
        [self.view addSubview:maskView];
        [UIView animateWithDuration:0.6 animations:^{
            maskView.alpha = 1;
        }];
        
        ZTScanBarInfo *barInfo = [ZTScanBarInfo new];
        barInfo.codeView = maskView;
        barInfo.codeResult = @"";
        [self.barInfos addObject:barInfo];
        
        [metadataObjects enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            AVMetadataMachineReadableCodeObject * code = (AVMetadataMachineReadableCodeObject*)
            [self.videoPreviewLayer transformedMetadataObjectForMetadataObject:obj];
            
            UIButton *codeBtn = [self codeButtonWithFrame:code.bounds icon:metadataObjects.count > 1];
            codeBtn.tag = idx+1;
            [self.view addSubview:codeBtn];
            
            ZTScanBarInfo *barInfo = [ZTScanBarInfo new];
            barInfo.codeView = codeBtn;
            barInfo.codeResult = code.stringValue;
            [self.barInfos addObject:barInfo];
        }];
        self.backBtn.hidden = YES;
        if(metadataObjects.count == 1){
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.8 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                ZTScanBarInfo *barInfo = self.barInfos[1];
                NSLog(@"%@",barInfo.codeResult);
                [self handelCodeResult:barInfo.codeResult];
            });
        }
    } else {
        NSLog(@"暂未识别出扫描的二维码");
    }
}

效果图如下:

下载链接如下:

https://download.csdn.net/download/z1332291552/19764277

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smile定格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值