swift 自定义扫码功能

2024-05-30 04:36
文章标签 自定义 功能 swift 扫码

本文主要是介绍swift 自定义扫码功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 使用功能​​​​​​​


1. 调用扫码功能(扫描二维码/条形码、图片识别二维码/条形码、生成二维码/条形码)
2. 自定义扫码界面UI(继承式自定义修改样式,完全自定义调用封装组件)
3. 生成二维码/条形码


源码地址:https://github.com/CMlinksuccess/ScanCodePackage.git​​​​​​​

效果图浏览:

使用方法

1、调用扫描页面,监听ScanBaseVCDelegate 实现结果回调

let scanvc = ScanBaseVC()
scanvc.delegate = self
self.present(scanvc, animated: true)

2、扫码样式类型 

//MARK: 扫码区域类型
enum ScanAreaStyle {case screen //全屏,或传入视图100%扫描case angle  //矩形框区域
}//MARK: 扫码区域动画类型
enum ScanAnimationStyle {case lineMove  //线条上下移动case grid      //网格扫描case lineStill //线条停放在中间位置case none      //无动画效果
}
//MARK: 扫码区域四角位置类型
enum ScanFrameAngleStyle {case inner //内嵌,一般无矩形框显示效果case outer //矩形框角上外嵌case on    //矩形框角上覆盖
}


扫码视图参数配置

//扫码视图参数配置
struct ScanViewStyle {//扫码区域类型,默认为矩形框内识别var scanAreaStyle:ScanAreaStyle = .angle//是否显示绘制矩形框。默认truevar isShowRetangle = true//区域宽高比,默认为1.0,即为正方形var whRatio:CGFloat = 1.0//矩形框中心偏移量,0为正中心位置var centerUpOffset:CGFloat = 0//矩形框左边距var retangleOffsetX:CGFloat = 60//矩形框线条颜色,默认为白色var retangleLineColor: UIColor = .white//矩形框宽度,默认为1.0var retangleLineWidth: CGFloat = 1.0//扫码框四个角类型var angleStyle:ScanFrameAngleStyle = .on//扫码框四个角颜色var angleColor:UIColor = UIColor(red: 0.0, green: 167.0 / 255.0, blue: 231.0 / 255.0, alpha: 1.0)//扫码框四个角宽高var angleW: CGFloat = 24.0var angleH: CGFloat = 24.0//扫码四个角线条宽度var frameLineW: CGFloat = 4//扫描动画类型var animationStyle: ScanAnimationStyle = .lineMove//动画视图var animationImageView:UIImageView?//非扫码区域背景颜色var backgroundAreaColor: UIColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)init() { }
}


3、结果回调

默认结果回调

extension ViewController: ScanBaseVCDelegate {func scanCodeBaseDidFinished(result: ScanResult?) {print("扫码和图码识别完成的结果回调\(String(describing: result))")}func scanGenerateCodeImage(image: UIImage?) {print("生成的二维码图片结果回调\(String(describing: image))")}
}


全自定义模式结果回调

extension CustomizedScanVC:ScanCodeViewDelegate, ScanImageActionDelegate{func scanCodeDidFinished (result: ScanResult?) {print("扫码结果回调")}func scanImageDidFinished(result: ScanResult?) {print("图片码识别结果回调")}
}


4、生成二维码/条形码

//生成二维码let image =  generateQRCodeImage(content: "生成二维码的内容8993847349",size: CGSize(width: 200, height: 200), codeType: "CIQRCodeGenerator",codeColor: .green,bgColor: .white)
//生成条形码let image =  generateBarCodeImage(content: "7928347957wjer",codeType: "CICode128BarcodeGenerator")
//缩放图片大小if let img = image {let resizeImage = resizeImage(image: img, quality: .none, rate: 2)} 


 

这篇关于swift 自定义扫码功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015590

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

Spring+MyBatis+jeasyui 功能树列表

java代码@EnablePaging@RequestMapping(value = "/queryFunctionList.html")@ResponseBodypublic Map<String, Object> queryFunctionList() {String parentId = "";List<FunctionDisplay> tables = query(parent

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla