Swift二维码生成器:适用于iOS和macOS的EFQRCode库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift二维码生成器(iOS/macOS):EFQRCode库



二维码已成为现代应用不可或缺的一部分——从身份验证到链接和联系人传输。如果您正在使用Swift开发iOS或macOS应用,无需从头编写复杂的编码算法。现成的EFQRCode库提供了便捷的API,用于创建、读取和自定义二维码。本文将介绍其功能、安装方法及使用示例。



什么是EFQRCode?

EFQRCode是一个用Swift编写的开源库。它支持iOS(9.0及以上版本)和macOS(10.11+)。主要功能包括:

  • 从字符串、URL地址、vCard联系人和文本生成二维码。
  • 自定义颜色、背景、尺寸和纠错级别。
  • 在二维码中心添加水印(Logo、图片)。
  • 创建动态二维码(GIF)。
  • 从图片中解码二维码。

该库使用Core Image内置的CIFilter,但增加了许多便捷的封装和自定义选项。



通过Swift Package Manager安装

将EFQRCode包添加到您的Xcode项目:

// 在Xcode中:File → Add Packages...// 粘贴仓库URL:https://github.com/EFPrefix/EFQRCode.git// 选择版本(建议选择"Up to Next Major")

或者手动在Package.swift中添加依赖:

dependencies: [    .package(url: "https://github.com/EFPrefix/EFQRCode.git", from: "6.0.0")]


生成二维码的基本示例

从字符串创建二维码的最简单方法:

import EFQRCode

// 从文本创建二维码if let image = EFQRCode.generate( content: "https://pythonlib.ru", size: EFIntSize(width: 300, height: 300)) { // 使用image(CGImage)进行显示 // 例如在iOS的UIImageView中: let uiImage = UIImage(cgImage: image) imageView.image = uiImage}

结果是一个标准的黑白二维码,尺寸为300x300像素。



自定义颜色和背景

您可以设置任意的前景色和背景色:

import EFQRCode

let qrImage = EFQRCode.generate( content: "Hello, Swift!", size: EFIntSize(width: 400, height: 400), backgroundColor: UIColor.yellow.cgColor, foregroundColor: UIColor.blue.cgColor, inputCorrectionLevel: .h // 最大纠错级别)

参数inputCorrectionLevel可取值.l(7%)、.m(15%)、.q(25%)、.h(30%)。级别越高,损坏时可恢复的数据越多。



添加Logo(水印)

要将Logo放置在二维码中心,请使用generateWithWatermark方法:

import EFQRCode

let watermarkImage = UIImage(named: "logo")?.cgImagelet qrWithLogo = EFQRCode.generateWithWatermark( content: "https://pythonlib.ru", size: EFIntSize(width: 500, height: 500), watermark: watermarkImage, watermarkMode: .center)

注意:Logo不应占据超过30%的面积,否则二维码可能无法被识别。



创建动态二维码(GIF)

EFQRCode支持生成动态二维码。例如,可以创建颜色变化的GIF:

import EFQRCode

let qrCodeGIF = EFQRCode.generateGIF( content: "Animated QR", size: EFIntSize(width: 200, height: 200), data: [someData] // 帧数组)

对于简单动画,可以使用预设颜色。更多详情请参阅库的文档。



从图片中解码二维码

要从照片或截图中读取二维码:

import                    

推荐