swift 二维码扫描

import UIKit

import AVFoundation


class ScanController:UIViewController,AVCaptureMetadataOutputObjectsDelegate,UIAlertViewDelegate {


    let device =AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

    let session =AVCaptureSession()

    var layer:AVCaptureVideoPreviewLayer?

    

    overridefunc viewDidLoad() {

        super.viewDidLoad()

        self.view.backgroundColor =UIColor.grayColor()

        let label_introduction =UILabel(frame:CGRectMake(10,100,300,50))

        label_introduction.text ="扫描"

        label_introduction.textColor =UIColor.whiteColor()

        self.view.addSubview(label_introduction)

        

        setupCamera()

    }

    

    func setupCamera(){

        self.session.sessionPreset =AVCaptureSessionPresetMedium

        

        do{

           let input =try AVCaptureDeviceInput(device:device)

            

            ifsession.canAddInput(input){

                session.addInput(input)

            }

        }catch{

            print("崩溃了。。。。。。")

        }

        

        

        

        layer =AVCaptureVideoPreviewLayer(session: session)

        layer?.videoGravity =AVLayerVideoGravityResizeAspectFill

        layer?.frame =CGRectMake(20,150, 280,280)

        self.view.layer.insertSublayer(self.layer!, atIndex: 0)

        

        let output =AVCaptureMetadataOutput()

        output.setMetadataObjectsDelegate(self, queue:dispatch_get_main_queue())

        ifsession.canAddOutput(output){

            session.addOutput(output)

            output.metadataObjectTypes = [AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code]

        }

        session.startRunning()

        

    }

    

    

    

    

    func captureOutput(captureOutput:AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection:AVCaptureConnection!) {

        var stringValue:String?

        if metadataObjects.count >0 {

            

            if metadataObjects.first?.type ==AVMetadataObjectTypeQRCode {

                

                stringValue = metadataObjects.first?.stringValue

            }elseif metadataObjects.first?.type ==AVMetadataObjectTypeEAN13Code {

                stringValue = metadataObjects.first?.stringValue

            }else{

                stringValue = "再扫啊"

            }

        }

        

        self.session.stopRunning()

        let alertView =UIAlertView()

        alertView.message = stringValue

        alertView.addButtonWithTitle("Sure")

        alertView.delegate =self

        alertView.cancelButtonIndex =0

        alertView.show()

    }

    

    func alertView(alertView:UIAlertView, clickedButtonAtIndex buttonIndex:Int) {

        session.startRunning()

    }


    

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值