@property (weak, nonatomic) IBOutlet UIImageView *imageView;
3)、生成二维码
/**点击屏幕的时候显示二维码*/
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//1.创建滤镜
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
//2.恢复默认
[filter setDefaults];
//3.给滤镜添加数据
NSString *dataString = @"http://www.easck.com/theDesertIslandOutOfTheWorld/";
// NSString *dataString = @"世俗孤岛";
//将数据转换成NSData类型
NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
//通过KVC设置滤镜的二维码输入信息
[filter setValue:data forKey:@"inputMessage"];
//4.获取输出的二维码图片(CIImage类型)
CIImage *outImage = [filter outputImage];
//将CIImage类型的图片装换成UIImage类型的图片
UIImage *image = [UIImage imageWithCIImage:outImage];
//5.显示二维码图片
self.imageView.image = image;
}
4)、通过二维码扫描工具,可以扫描生成的二维码
若二维码的输入信息是URL,则会打开指定的网络资源
三、二维码的扫描
1、注意:
- 二维码扫码需要使用摄像头,需要真机设备
-
Xcode7可是免费真机调试
2、二维码扫描的过程
- 通过摄像头扫描二维码
- 解析二维码数据
-
根据二维码信息执行相应的操作
3、过程分析
1)、通过摄像头扫描二维码信息需要用到AVCaptureSession类- 该类是用来协调从音频/视频输入端口到输出端的数据
- 该类需要一个输入设备AVCaptureDeviceInput,通常是摄像头
- 该类需要一个输出端,输出指定类型的数据,有多个类可以选择(如:AVCaptureMetadataOutput)
-
需要调用- startRunning方法开启输入源
2)、通过AVCaptureSession类捕获的数据,可以通过指定输出端的过滤类型来以特定的类型解析捕获的数据










