ios – 如何生成与Snapchat的Snapcode类似的图像,将以相同的方式使用?

我正在构建一个使用QR码连接用户的应用程序,类似于Snapchat允许用户在Snapchat上添加对方的应用程序.

我希望使用更加美观的替代QR码,与Snapchat的Snapcode类似.关于如何在iOS应用程序中完成任何想法?

解决方法

如果您不想使用QRCode,您将不得不创建自己的模式来生成/读取图像.

但也许你可以使用QRCode.

QRCode有一个error correction level.考虑到它,你仍然可以使你的QRCode更美观,如你所要求的.只要记住“错误更正级别越高,存储容量越小”,只要算法能够获得所需的信息,您就可以自定义图像.

当您生成QRCode图像时,您可以这样做:

private enum InputCorrectionLevel: String {
    case Low = "L",Medium = "M",High = "Q",Ultra = "H"
}

func generateQRCodeFromString(string:String,withFrameSize frameSize:CGSize) -> CIImage? {
    var qrCodeCIImage: CIImage?
    let data = string.dataUsingEncoding(NSISOLatin1StringEncoding,allowLossyConversion: false)

    if let filter = CIFilter(name: "CIQRCodeGenerator") {
        filter.setValue(data,forKey: "inputMessage")
        filter.setValue(InputCorrectionLevel.Low.rawValue,forKey: "inputCorrectionLevel")

        if let outputImage = filter.outputImage {
            let scaleX = frameSize.width / outputImage.extent.size.width
            let scaleY = frameSize.height / outputImage.extent.size.height
            qrCodeCIImage = outputImage.imageByApplyingTransform(CGAffineTransformMakeScale(scaleX,scaleY))
        } else {
            print("Error getting output image")
        }
    } else {
        print("Error creating filter")
    }

    return qrCodeCIImage
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...