iOS --二维码
来源:互联网 发布:宣传视频制作软件 编辑:程序博客网 时间:2024/06/13 01:18
1.//生成二维码
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// 1.实例化二维码滤镜
CIFilter *filter = [CIFilterfilterWithName:@"CIQRCodeGenerator"];
// 2.恢复滤镜的默认属性 (因为滤镜有可能保存上一次的属性)
[filter setDefaults];
// 3.将字符串转换成NSdata
NSData *data = [@"http://www.baidu.com"dataUsingEncoding:NSUTF8StringEncoding];
// 4.通过KVO设置滤镜,传入data,将来滤镜就知道要通过传入的数据生成二维码
[filter setValue:dataforKey:@"inputMessage"];
// 5.生成二维码
CIImage *outputImage = [filteroutputImage];
UIImage *image = [UIImage imageWithCIImage:outputImage];
// 6.设置生成好得二维码到imageview上
self.iv.image = image;
}
2.//扫描二维码
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>
@property (nonatomic,strong) AVCaptureSession *session;
@property (nonatomic,strong) AVCaptureVideoPreviewLayer *previewLayer;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 1.实例化拍摄设备
AVCaptureDevice *device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
// 2.设置输入设备
AVCaptureDeviceInput *input = [AVCaptureDeviceInputdeviceInputWithDevice:device error:nil];
// 3.设置元数据输出
// 3.1实例化拍摄元数据输出
AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutputalloc] init];
// 3.3设置输出数据代理
[output setMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];
// 4.添加拍摄会话
// 4.1实例化拍摄会话
AVCaptureSession *session = [[AVCaptureSessionalloc] init];
// 4.2添加会话输入
[session addInput:input];
// 4.3添加会话输出
[session addOutput:output];
// 4.3 设置输出数据类型,需要将元数据输出添加到会话后,才能指定元数据类型,否则会报错
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
self.session = session;
// 5.视频预览图层
// 5.1 实例化预览图层,传递_session是为了告诉图层将来显示什么内容
AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayerlayerWithSession:_session];
preview.videoGravity =AVLayerVideoGravityResizeAspectFill;
preview.frame =self.view.bounds;
// 5.2将图层插入当前视图
[self.view.layerinsertSublayer:preview atIndex:100];
self.previewLayer = preview;
// 6.启动会话
[_sessionstartRunning];
}
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
// 会频繁的扫描,调用代理方法
// 1. 如果扫描完成,停止会话
[self.sessionstopRunning];
// 2.删除预览图层
[self.previewLayerremoveFromSuperlayer];
NSLog(@"%@", metadataObjects);
// 3.设置界面显示扫描结果
if (metadataObjects.count >0) {
AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];
// 提示:如果需要对url或者名片等信息进行扫描,可以在此进行扩展!
// _label.text = obj.stringValue;
NSLog(@"%@", obj.stringValue);
}
}
- iOS --二维码
- iOS-二维码扫描
- iOS开发-二维码扫描
- iOS--二维码生成和扫描
- ios 二维码
- 二维码 ios
- iOS 二维码
- ios二维码
- ios 二维码
- iOS - 二维码
- iOS 二维码
- iOS二维码
- IOS 二维码
- iOS二维码
- IOS生成二维码、扫二维码
- iOS,二维码识别,保存二维码
- ios开发--用Xcode 8和Swift 3 构建条形码和二维码识别器
- IOS二维码解决方案
- 指向学生类的指针
- 关于artTemplate使用的一点小心得
- 程序员心想事成的 10 步技巧
- DBus编译出错 ----QT中dbus所依赖的一个库
- 呵呵
- iOS --二维码
- avalon.js学习笔记
- ORACLE EXP不能导出空表解决方法
- ios学习路线—Objective-C(堆(heap)和栈(stack))
- C# 面向对象技术
- JDBC基础
- Word2Vec学习笔记(三)续
- kafka学习六:kafka集成第三方
- C++信号处理