iOS生成二維碼(中心加logo)

直接把代碼一貼,生成二維碼!非常簡(jiǎn)單,不需要解釋!
//
//  ViewController.h
//  TestE
//
//  Created by 王龍 on 16/8/2.
//  Copyright ? 2016年 王龍. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) UIImageView * imageView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

//二維碼生成 實(shí)質(zhì):  把字符串轉(zhuǎn)變?yōu)?圖片
// 需要 coreImage框架, 已經(jīng)包含在了 UIKit框架里面

[self logoQrCode];
}
//MARK: 二維碼中間內(nèi)置圖片,可以是公司logo
-(void)logoQrCode{

//
NSArray *filters = [CIFilter filterNamesInCategory:kCICategoryBuiltIn];
NSLog(@"%@",filters);

//二維碼過(guò)濾器
CIFilter *qrImageFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

//設(shè)置過(guò)濾器默認(rèn)屬性
[qrImageFilter setDefaults];

//將字符串轉(zhuǎn)換成 NSdata (雖然二維碼本質(zhì)上是 字符串,但是這里需要轉(zhuǎn)換,不轉(zhuǎn)換就崩潰)
//    字符串可以隨意換成網(wǎng)址等
NSData *qrImageData = [@"XXX,我愛(ài)你" dataUsingEncoding:NSUTF8StringEncoding];

//我們可以打印,看過(guò)濾器的 輸入屬性.這樣我們才知道給誰(shuí)賦值
NSLog(@"%@",qrImageFilter.inputKeys);

//設(shè)置過(guò)濾器的 輸入值  ,KVC賦值
[qrImageFilter setValue:qrImageData forKey:@"inputMessage"];

//取出圖片
CIImage *qrImage = [qrImageFilter outputImage];

//但是圖片 發(fā)現(xiàn)有的小 (27,27),我們需要放大..我們進(jìn)去CIImage 內(nèi)部看屬性
qrImage = [qrImage imageByApplyingTransform:CGAffineTransformMakeScale(20, 20)];

//轉(zhuǎn)成 UI的 類型
UIImage *qrUIImage = [UIImage imageWithCIImage:qrImage];


//----------------給 二維碼 中間增加一個(gè) 自定義圖片----------------
//開(kāi)啟繪圖,獲取圖形上下文  (上下文的大小,就是二維碼的大小)
UIGraphicsBeginImageContext(qrUIImage.size);

//把二維碼圖片畫上去. (這里是以,圖形上下文,左上角為 (0,0)點(diǎn))
[qrUIImage drawInRect:CGRectMake(0, 0, qrUIImage.size.width, qrUIImage.size.height)];


//再把小圖片畫上去
UIImage *sImage = [UIImage imageNamed:@"Snip20160715_4"];

CGFloat sImageW = 100;
CGFloat sImageH= sImageW;
CGFloat sImageX = (qrUIImage.size.width - sImageW) * 0.5;
CGFloat sImgaeY = (qrUIImage.size.height - sImageH) * 0.5;

[sImage drawInRect:CGRectMake(sImageX, sImgaeY, sImageW, sImageH)];

//獲取當(dāng)前畫得的這張圖片
UIImage *finalyImage = UIGraphicsGetImageFromCurrentImageContext();

//關(guān)閉圖形上下文
UIGraphicsEndImageContext();

//設(shè)置圖片
self.imageView.image = finalyImage;
}

-(UIImageView *)imageView{
if(_imageView == nil){
    
    _imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 50, 400, 400)];
    [self.view addSubview:_imageView];
}
return _imageView;
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,848評(píng)論 25 709
  • 夏爸夏媽還是輸了跟兒子的博弈。 兒子只帶了幾件衣服一個(gè)背包,就離開(kāi)家,去了晴子那里。背后夏媽的哭泣聲并沒(méi)有留住夏天...
    趙某人手記閱讀 523評(píng)論 0 2

友情鏈接更多精彩內(nèi)容