RoundCode is custom circular QR code with lots of customization. Similar to Facebook messenger and Apple's App Clip Codes the RoundCode includes convenient camera scanner and decoder.
pod 'RoundCode'
File > Swift Packages > Add Package Dependency
https://github.com/aslanyanhaik/RoundCode
import framework
import RoundCode
create coder and encode
let image = RCImage(message: "Hello World")
let coder = RCCoder()
do {
imageView.image = try coder.encode(image)
} catch {
//handle errors
}
You can also validate the messsage before encoding
let coder = RCCoder()
let isValidText = coder.validate("Hello world")
Create instane of RCCameraViewController and handle the delegate
class ViewController: UIViewController, RCCameraViewControllerDelegate {
func scan() {
let cameraController = RCCameraViewController()
cameraController.delegate = self
present(cameraController, animated: true)
}
func cameraViewController(didFinishScanning message: String) {
messageLabel.text = message
}
}
You can also decode a UIImage like this
let coder = RCCoder()
do {
messageLabel.text = try coder.decode(UIImage(named: code)!)
} catch {
//handle errors
}
You can change the appearance like this
var image = RCImage(message: "Hello world")
image.contentInsets = UIEdgeInsets(top: 8, left: 10, bottom: 4, right: 10)
image.attachmentImage = UIImage(named: "Profile")
image.size = 300
image.gradientType = .linear(angle: CGFloat.pi)
image.tintColors = [.red, .black]
If image is on dark background you should change scanning mode to darkBackground
let coder = RCCoder()
coder.scanningMode = .darkBackground
You can provide custom coding configuration in order to encode long text by reducing number of characters
let configuration = RCCoderConfiguration.shortConfiguration
let coder = RCCoder(configuration: configuration)
let configuration = RCCoderConfiguration(characters: " -abcdefghijklmnopqrstuvwxyz0123456789")
let coder = RCCoder(configuration: configuration)
let configuration = RCCoderConfiguration(characters: " -abcdefghijklmnopqrstuvwxyz0123456789")
let coder = RCCoder(configuration: configuration)
let camera = RCCameraViewController()
camera.coder = coder
Written in Swift 5 and requires Xcode 11.0
RoundCode is compatible with iOS 13.0+.
Copyright 2020 Haik Aslanyan.
Licensed under MIT License: https://opensource.org/licenses/MIT