iOS生成自定制二维码

前言

最近项目有个需求,需要生成二维码,并且可以保存本地相册以及通过微信分享好友,二维码样式如下图:

iOS生成自定制二维码_第1张图片
二维码样式

下面是实现功能的过程。

过程

开始,通过网上了解得知iOS有个原生框架是可以生成二维码的-CoreImage,代码如下:

//实例化一个滤镜
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    //1设置filter的默认值
    //因为之前如果使用过滤镜,输入有可能会被保留,因此,在使用滤镜之前,最好恢复默认设置
    [filter setDefaults];
    
    //2将传入的字符串转换为NSData
    NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
    
    //3.将NSData传递给滤镜(通过KVC的方式,设置inputMessage)
    [filter setValue:data forKey:@"inputMessage"];
    
    //4.由filter输出图像
    CIImage *outputImage = [filter outputImage];
    
    //5.将CIImage转换为UIImage
    UIImage *qrImage = [UIImage imageWithCIImage:outputImage];
    
    //6.返回二维码图像
    return qrImage;

代码来自网上demo,出处不明。但是通过这样生成的二维码过于简陋,清晰度也很差,而且也不符合产品需求,如下图:

系统原生生成二维码.png

于是继续探索,搜到大神的这篇文章iOS开发-定制多样式二维码,直接用里面的demo即可生成以下二维码,样式和清晰度完全符合产品需求,就这个了。

iOS生成自定制二维码_第2张图片
处理后清晰二维码.png

需要特别说明一点的是, 上面大神的demo生成二维码时会把底色变为透明,当二维码分享到微信并点开放大时是看不到的,所以需要把这部分的代码屏蔽掉才行。

结束

学习之路,与君共勉。

你可能感兴趣的:(iOS生成自定制二维码)