美文网首页
苹果系统自带的二维码扫描

苹果系统自带的二维码扫描

作者: 中秋梧桐语 | 来源:发表于2019-10-24 13:54 被阅读0次

    一、 创建扫描界面,跟其他界面搭建是一样的。

    二、 设置扫描。

    1. 首先判断当前设备是否支持扫描功能,虽然目前没有不支持的设备了,看似多此一举,但是必须做出判断,比如,模拟器就不支持扫描。

    判断当前设备是否支持扫描

    2. 判断用户是否授权使用摄像头

    用户权限

    3. 设置录像的输入输出流。

    ```

    // Output

    _captureOutput = [[AVCaptureMetadataOutput alloc]init];

    [_captureOutput setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

    // Session

    _captureSession = [[AVCaptureSession alloc]init];

    [_captureSession setSessionPreset:AVCaptureSessionPresetHigh];

    if ([_captureSession canAddInput:self.captureInput])

    {

    [_captureSession addInput:self.captureInput];

    }

    //    BOOL iscan = [_captureSession canAddOutput:self.captureOutput];

    if ([_captureSession canAddOutput:self.captureOutput])

    {

    [_captureSession addOutput:self.captureOutput];

    }

    CGRect rect = [self getScanCrop:CGRectMake(0.18 * SCREEN_WIDTH, 0.25 * SCREEN_HEIGHT, 0.64 * SCREEN_WIDTH, SCREEN_WIDTH * 0.64) readerViewBounds:self.view.bounds];

    _captureOutput.rectOfInterest = rect;

    ```

    4. 最后就是讲扫描层添加到 layer上启动扫描

    ``` 

    NSArray *suppportArray  = self.captureOutput.availableMetadataObjectTypes;

    //    if ([suppportArray containsObject:availab]) {

    self.captureOutput.metadataObjectTypes =suppportArray;

    _preview =[AVCaptureVideoPreviewLayer layerWithSession:self.captureSession];

    _preview.videoGravity =AVLayerVideoGravityResizeAspectFill;

    _preview.frame =self.view.layer.bounds;

    [self.view.layer insertSublayer:_preview atIndex:0];

    if (!suppportArray.count) {

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"此设备不支持二维码扫描" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

    [alert show];

    return;

    }

    [self.captureSession startRunning];

    ```

    相关文章

      网友评论

          本文标题:苹果系统自带的二维码扫描

          本文链接:https://www.haomeiwen.com/subject/pbpqjxtx.html