iOS开发-二维码的基本使用
二维码在生活中出现的频率越来越多了,大街小巷各个角落,它的出现更大的作用是代替功能单一的传统条形码,但是通常很多人第一次见到这个都不清楚这是干嘛用的。最初第一次见到可能就是买到的商品上有一个数字的条形码,在超市结账时,售货员会扫描条形码分辨这个商品的具体信息,所以通常人们对于此的认识只是停留在商品上一串神秘的数字图形,由此传统的条形码就是这一大串奇怪的数字。如今各种形态的二维码充斥在各式各样的商品上,正在走向普及的行列中
二维码中的内容常见分为三种:
1、纯文本
2、名片(有格式的文本)
3、URL(扫一扫)
然后分享我对二维码的理解
1、iOS7前
使用zbarsdk第三方框架来完成基本二维码功能,
由于生成二维码的工作计算量比较大,会在服务端生成
2、iOS7中
集成了二维码的生成和读取的功能
看似工作效率提高了,不用大量的计算,但生成的二维码图像清晰度略差
在这演示一下iOS7中二维码的基本使用
生成二维码的步骤:
1>导入CoreImage框架
2>通过滤镜CIFilter生成二维码
1、导入框架


2、搭建界面,监听文本框动作(设置文本框代理)


2、拥有图片属性,遵守代理协议,回车时关闭键盘
@interface ViewController () <UITextFieldDelegate> @property (weak, nonatomic) IBOutlet UIImageView *qrImage; @end @implementation ViewController - (BOOL)textFieldShouldReturn:(UITextField *)textField
{
// 1. 关闭键盘
[self.view endEditing:YES]; return YES;
} @end
3、为了代码的复用性,创建NSString的分类,直接在分类中生成二维码图片
.h文件,提供方法返回字符串对应的二维码图像
@interface NSString (Helper) /**
* 返回当前字符串对应的二维码图像
*
* 二维码的实现是将字符串传递给滤镜,滤镜直接转换生成二维码图片
*/
- (UIImage *)createQRCode; @end
.m文件,导入CoreImage头文件,通过滤镜生成图像
#import "NSString+Helper.h"
#import <CoreImage/CoreImage.h> @implementation NSString (Helper) /**
返回当前字符串对应的二维码图像 二维码的实现是将字符串传递给滤镜,滤镜直接转换生成二维码图片
*/
- (UIImage *)createQRCode
{
// 1. 实例化一个滤镜
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
// 1.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
return [UIImage imageWithCIImage:outputImage];
} @end
4、真机上运行,

成功识别

URL也成功生成


经过上面几步就实现了二维码的生成,转载请注明出处 @是否呢 http://www.cnblogs.com/wanglairo/
iOS开发-二维码的基本使用的更多相关文章
- iOS开发-二维码扫描和应用跳转
iOS开发-二维码扫描和应用跳转 序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...
- IOS开发 二维码功能的实现
原帖地址:http://yul100887.blog.163.com/blog/static/20033613520121020611299/ 如今二维码随处可见,无论是实物商品还是各种礼券都少不了二 ...
- iOS开发 二维码生成
基于libqrencode的二维码生成 + (void)drawQRCode:(QRcode *)code context:(CGContextRef)ctx size:(CGFloat)size { ...
- iOS开发--二维码的扫描
一.需要包含头文件 #import <AVFoundation/AVFoundation.h> 二.通过设置<AVCaptureMetadataOutputObjectsDelega ...
- iOS开发--二维码的生成
一.需要包含头文件 #import <CoreImage/CoreImage.h> 二.示例代码 -- 以下生成的二维码不够清晰 如图: - (void)touchesBegan:(NSS ...
- iOS开发 - 二维码的生成与读取
二维码的生成 从iOS7開始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk眼下不支持64位处理器 生成二维码的步骤: 导入CoreImage框架 通过滤镜CIFilter生成二维码 二维 ...
- Android开发--二维码开发应用(转载!)
android项目开发 二维码扫描 基于android平台的二维码扫描项目,可以查看结果并且链接网址 工具/原料 zxing eclipse 方法/步骤 首先需要用到google提供的zxin ...
- iOS 原生二维码扫描和生成
代码地址如下:http://www.demodashi.com/demo/12551.html 一.效果预览: 功能描述:WSLNativeScanTool是在利用原生API的条件下封装的二维码扫描工 ...
- iOS - QRCode 二维码
1.QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: 1.ZBar 在扫描 ...
随机推荐
- JSP计算器
<%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...
- java操作数据库
增加 public String addParent(Parent pp) { Connection conn=new ConntionUtil().openConnection(); Prepare ...
- JDBC获取sql server存储过程查询结果集(没有出参)
对于一些较为复杂的统计条件查询,可以通过存储过程来实现,既可以提高效率,减少网络流量,也可以避免sql语句耦合在代码中.但是存储过程返回的结果集如何获取(类似表数据),却着实让我费劲心力. 如下: C ...
- 02 Apache Solr: 概览 Solr在信息系统架构中的位置
概述: Apache Solr是一个用JAVA语言构建在Apache Lucene项目上的开源的企业级搜索平台.主要特性包含:全文搜索.命中高亮.片段式搜索.实时索引.动态集群.数据库集成. ...
- 怎样获取本机的ip地址
首先介绍一下用到的结构体 struct hostent { const char *h_name; // official name of host char **h_aliases; // alia ...
- new与malloc
首先将new与malloc的区别总结如下: 1 new可以自动计算需要分配多大的内存,而malloc必须指明. 2 new返回的指针是有类型的,malloc返回void*类型的指针. 3 new在分配 ...
- 一个简单算法题引发的思考<DNA sorting>(about cin/template/new etc)
首先是昨天在北京大学oj网上看到一个简单的算法题目,虽然简单,但是如何完成一段高效.简洁.让人容易看懂的代码对于我这个基础不好,刚刚进入计算机行业的小白来说还是有意义的.而且在写代码的过程中,会发现自 ...
- tomcat(三)--基本安装配置
0x01 JDK和Tomcat安装 到oracle官网下载jdk,当前下载的版本是Linux x64 jdk-8u101-linux-x64.tar.gz 到apache官网下载tomcat,当前最 ...
- io流(详询请加qq:2085920154)
import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ioTest ...
- 5. Singleton(单例)
意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 适用性: 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时. 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代 ...