服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

香港云服务器
服务器之家 - 编程语言 - Swift - Swift3.0仿支付宝二维码扫描效果

Swift3.0仿支付宝二维码扫描效果

2021-01-03 16:53Stevin三天三夜的专栏 Swift

这篇文章主要为大家详细介绍了Swift3.0仿支付宝二维码扫描效果的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Swift3.0二维码扫描的具体代码,供大家参考,具体内容如下

关键代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import AVFoundation
//获取摄像设备
let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)
do {
  //创建输入,输出流
  let input = try AVCaptureDeviceInput.init(device: device)
  let output = AVCaptureMetadataOutput()
  output.rectOfInterest = CGRect(x: 0.1, y: 0, width: 0.9, height: 1)
  //设置代理,并且在主线程刷新
  output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
  //初始化链接对象 / 高质量采集率
  session.canSetSessionPreset(AVCaptureSessionPresetHigh)
  session.addInput(input)
  session.addOutput(output)
 
  //先添加输入输出流,后设置支持的扫码所支持的格式,不然报错如下:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVCaptureMetadataOutput setMetadataObjectTypes:] Unsupported type found - use -availableMetadataObjectTypes'
  //http://stackoverflow.com/questions/31063846/avcapturemetadataoutput-setmetadataobjecttypes-unsupported-type-found
  //设置扫码支持的编码格式
  output.metadataObjectTypes = [AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code,AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code]
 
  let layer = AVCaptureVideoPreviewLayer(session: session)
  layer?.videoGravity = AVLayerVideoGravityResizeAspectFill
  layer?.frame = view.layer.bounds
  view.layer.insertSublayer(layer!, at: 0)
  //开始捕捉
  session.startRunning()
 
} catch let error as NSError {
  print("errorInfo\(error.domain)")
}
 
/// 实现代理方法
extension ScanCodeController:AVCaptureMetadataOutputObjectsDelegate {
  func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {
 
    if metadataObjects.count > 0 {
      session.stopRunning()
      let object = metadataObjects[0]
      let string: String = (object as AnyObject).stringValue
      if let url = URL(string: string) {
      if UIApplication.shared.canOpenURL(url) {
        //去打开地址链接
        _ = self.navigationController?.popViewController(animated: true)
        UIApplication.shared.open(url)
 
      } else {
        //获取非链接结果
        let alertViewController = UIAlertController(title: "扫描结果", message: (object as AnyObject).stringValue, preferredStyle: .alert)
        let actionCancel = UIAlertAction(title: "退出", style: .cancel, handler: { (action) in
          _ = self.navigationController?.popViewController(animated: true)
        })
        let actinSure = UIAlertAction(title: "再次扫描", style: .default, handler: { (action) in
          self.session.startRunning()
        })
        alertViewController.addAction(actionCancel)
        alertViewController.addAction(actinSure)
        self.present(alertViewController, animated: true, completion: nil)
      }
      }
    }
  }
}

DEMO效果:

Swift3.0仿支付宝二维码扫描效果

下载地址:DEMO

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

延伸 · 阅读

精彩推荐
  • Swiftmac git xcrun error active developer path 错误

    mac git xcrun error active developer path 错误

    本文主要是讲诉了如何解决在mac下使用git;xcode4.6的环境时,出现了错误(mac git xcrun error active developer path)的解决办法,希望对大家有所帮助...

    Swift教程网2232020-12-16
  • SwiftSwift能代替Objective-C吗?

    Swift能代替Objective-C吗?

    这是我在网上上看到的答案,复制粘贴过来和大家分享一下,因为我和很多人一样很关心Swift的出现对Mac开发的影响和对Objective-C的影响。...

    Swift教程网4412020-12-16
  • Swiftswift where与匹配模式的实例详解

    swift where与匹配模式的实例详解

    这篇文章主要介绍了swift where与匹配模式的实例详解的相关资料,这里附有简单的示例代码,讲的比较清楚,需要的朋友可以参考下...

    追到梦的魔术师14382021-01-06
  • SwiftSwift中转义闭包示例详解

    Swift中转义闭包示例详解

    在Swift 中的闭包类似于结构块,并可以在任何地方调用,下面这篇文章主要给大家介绍了关于Swift中转义闭包的相关资料,需要的朋友可以参考下...

    小小小_小朋友11412021-12-26
  • SwiftSwift的74个常用内置函数介绍

    Swift的74个常用内置函数介绍

    这篇文章主要介绍了Swift的74个常用内置函数介绍,这篇文章列举出了所有的Swift库函数,内置函数是指无需引入任何模块即可以直接使用的函数,需要的朋友可...

    Swift教程网5802020-12-19
  • SwiftSwift实现多个TableView侧滑与切换效果

    Swift实现多个TableView侧滑与切换效果

    这篇文章主要为大家详细介绍了Swift实现多个TableView侧滑与切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    乞力马扎罗的雪雪5822021-01-08
  • SwiftSwift教程之基础数据类型详解

    Swift教程之基础数据类型详解

    这篇文章主要介绍了Swift教程之基础数据类型详解,本文详细讲解了Swift中的基本数据类型和基本语法,例如常量和变量、注释、分号、整数、数值类型转换等...

    Swift教程网5162020-12-18
  • SwiftSwift使用CollectionView实现广告栏滑动效果

    Swift使用CollectionView实现广告栏滑动效果

    这篇文章主要为大家详细介绍了Swift使用CollectionView实现广告栏滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Stevin的技术博客12372021-01-13
1101