Swift 二维码扫描 简单实现

3.30看视频  学到了二维码简单的实现 还有一些动画的实现  今天就先记录一下二维码扫描的简单实现  不太好记手写一遍 学习的基础在于模仿嘛

创建一个实现二维码扫描的步骤

1.首先是懒加载创建 会话 输入设备  输出设备

    // 先倒入框架 AVFoundation
    import AVFoundation
    //通过懒加载 创建输入设备
    private lazy var deviceInput: AVCaptureDeviceInput? = {
        //获取设备摄像头
        let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
        //使用摄像头为输入设备  创建时需要try一下因为有可能拿不到 摄像头所以返回值有可能为空 该对象为可选(?)类型
        do{
            let input = try AVCaptureDeviceInput(device: device)
            return input
        }catch{
            print(error)
            return nil
        }
    }()
    //创建 会话/输出  比较简单 只需要创建一个对象
    private lazy var session: AVCaptureSession = AVCaptureSession()
    //创建 输出设备
    private lazy var deviceOutput: AVCaptureMetadataOutput = AVCaptureMetadataOutput()这么第一步 就准备完毕 扫描二维码的 整体就是 输出设备通过 会话来 拿到 输入设备的获取的值 再解析 

2.实现扫描二维码  输入输出 添加到会话

        //先判断是否能将 输入输出设备 添加到会话中
        if !session.canAddInput(deviceInput) {
            return
        }
        if !session.canAddOutput(deviceOutput){
            return
        }
        //将设备添加到 会话中
        session.addInput(deviceInput)
        session.addOutput(deviceOutput)

3.设置允许扫描类型

        //设置扫描类型  也就是设置输出设备能够解析的数据类型
          //设置类型时 必须先把设备添加到会话 否则崩溃
        deviceOutput.metadataObjectTypes = deviceOutput.availableMetadataObjectTypes
deviceOutput.availableMetadataObjectTypes 获取到所有的解析类型

4.实现代理 拿到扫描数据

          //设置代理 解析数据   queue线程
        deviceOutput.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue())

5.开始会话

        //开始 执行会话
        session.startRunning()

6.添加图层 实现预览

    //为了更好的操作体验 一般扫描二维码的时候都会加上 预览 和 二维码定位线   先实现预览比较简单  定位线学会了再更新
    //还是懒加载
    private lazy var previewLzyer: AVCaptureVideoPreviewLayer = {
        //预览涂层 想要展示一个界面 界面展示数据  数据通过输入设备获取  会话中则存储了数据
        //注: 闭包 访问外界对象 则需要带上self
        let preview = AVCaptureVideoPreviewLayer(session: self.session)
        preview.frame = UIScreen.mainScreen().bounds
        return preview
    }()再把预览添加到 二维码界面,但是有可能遮挡到某些空间 则  view.layer.insertSublayer(<#T##layer: CALayer##CALayer#>, atIndex: <#T##UInt32#>)插入一个layer视图 在index 第几层
时间: 2024-11-06 11:44:14

Swift 二维码扫描 简单实现的相关文章

swift编程语言简单开发二维码扫描

最近在学习swift编程语言(http://www.maiziedu.com/course/ios/16-161/), 在看视频学习swift编程语言时,发现有个二维码扫面案例的教程,非常的不错,其中还有一些动画的实现 ,今天就先记录一下二维码扫描的简单实现  不太好记手写一遍 学习的基础在于模仿嘛 创建一个实现二维码扫描的步骤 1.首先是懒加载创建 会话 输入设备  输出设备 // 先倒入框架 AVFoundation 2.    import AVFoundation 3.    //通过懒

iOS二维码扫描的实现(Swift)

随着二维码的普遍使用,二维码扫描也成为了很多app的一个基本功能,本篇主要来介绍一下如何实现一个简单的二维码扫描功能.本文使用了XCode自带的AVFoundation 库,利用Swfit语言实现. 实现的步骤如下: 1.获取视频设备(Video) 在二维码扫描中,我们的输入流是视频.我们需要enable视频设备来获取相应的元数据. 2. 创建Session来处理视频的输入输出流 3. 创建输入输出流,并添加至Session中 4. 处理二维码数据 该方法是AVCaptureMetadataOu

Swift AVFoundation 二维码扫描和生成

项目最终不须要支持iOS6了(泪崩),在二维码扫描这一块,可以全然的放弃ZXing库,改用系统的AVFoundation了,拿swift写了个Demo,效果例如以下: github地址:点这里 有关AVFoundation和Core Image(滤镜等),可以先看看objc.io第21期和第23期的有关介绍. 初始化视频捕捉 // 初始化视频捕获 private func initCapture() { // 代表抽象的硬件设备,这里传入video let captureDevice = AVC

Swift:使用系统AVFoundation实现二维码扫描和生成

系统提供的AVCaptureSession仅仅适用于iOS7.0以上的系统.之前的请用Zbar来替代 下载地址:http://download.csdn.net/detail/huobanbengkui/8881097 配置project: 引入: import Foundation import AVFoundation 接受AVCaptureMetadataOutputObjectsDelegate(如: class QrcodeVC: UIViewController,AVCaptureM

【转】 iOS使用AVFoundation实现二维码扫描

原文:http://strivingboy.github.io/blog/2014/11/08/scan-qrcode/ 关于二维码扫描有不少优秀第三方库如: ZBar SDK 里面有详细的文档,相应介绍也非常多,如:http://rdcworld-iphone.blogspot.in/2013/03/how-to-use-barcode-scanner-br-and-qr-in.html ZXing google推出的开源项目,相应介绍如:http://blog.devtang.com/blo

Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你当前的控制器中导入 #import <AVFoundation/AVFoundation.h> <AVCaptureMetadataOutputObjectsDelegate>代理 3).在@interface中定义 @property (nonatomic,strong)AVCapt

Google zxing实现二维码扫描完美解决方案

最近因项目需求,需要在App中集成二维码扫描的功能.网上找了很多资料,最后决定使用Google的zxing来实现.实现的过程遇到了很多的坑,也是因为这些坑在网上没有具体的解决方案,今天就把我的实现过程分享给大家. 我会分为两步来和大家分享: (1)项目中如何集成zxing (2)如何修改取景框的样式 (3)总结填坑 1.项目中集成zxing 在项目中集成zxing,网上有很多的教程也说的比较详细了,zxing中的内容很多,涵盖了很多的扫码功能(不仅仅局限于扫描二维码...).步骤很简单,只需要我

php 实现 二维码 扫描登录

本人简单实现的示例,使用任意二维码工具打开二维码对应链接 http://www.vincentguo.cn/demo/scan 原理介绍: 第一步:访问登录页面,生成唯一key,例如MkhjDFL=,并且将此key 存入cache,对应值为-1 ,-1表示未登录 ,key有效期我设置的为5分钟,过期就会重新生成二维码图片 第二步:生成二维码,本人使用库(https://github.com/2amigos/yii2-qrcode-helper),二维码对应的链接 http://www.vince

【转】Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果--不错

原文网址:http://blog.csdn.net/xiaanming/article/details/10163203 转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现