一、iOS7之后叛买,我們可以使用系統(tǒng)框架來(lái)生成二維碼
1爽柒、系統(tǒng)二維碼主要通過(guò)CIFilter的對(duì)象來(lái)生成, 先導(dǎo)入這個(gè)類所在的框架:
#import <CoreImage/CoreImage.h>
2、生成二維碼的UIImage
+ (UIImage*)createQRWithString:(NSString*)text QRSize:(CGSize)size QRColor:(UIColor*)qrColor bkColor:(UIColor*)bkColor
{
NSData *stringData = [text dataUsingEncoding: NSUTF8StringEncoding];
//生成
CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[qrFilter setValue:stringData forKey:@"inputMessage"];
[qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];
//上色
CIFilter *colorFilter = [CIFilter filterWithName:@"CIFalseColor"
keysAndValues:
@"inputImage",qrFilter.outputImage,
@"inputColor0",[CIColor colorWithCGColor:qrColor.CGColor],
@"inputColor1",[CIColor colorWithCGColor:bkColor.CGColor],
nil];
//生成CIImage
CIImage *qrImage = colorFilter.outputImage;
//繪制
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage fromRect:qrImage.extent];
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return codeImage;
}
二橄教、在二維碼上添加其他圖片
1清寇、在二維碼上添加其他圖片時(shí),不能太大护蝶,否則會(huì)導(dǎo)致掃描不到二維碼中的信息