~~~写在前面的话~~~
我之前打算做一个APP,然后把电话号码生成二维码 或者条形码, 用手机扫描,这样,就不用担心会输入错误电话号码了。
在下面是实现的扫描二维码的功能中,扫描完成,将会把扫描到的号码 拨打出去。~~~
关于应用之间的切换,参考链接:
http://blog.sina.com.cn/s/blog_7ea0400d0102uy01.html
~~CSDN不知道怎么了,贴代码的地方不能有横向的滚动条了,不过,可以用下面的方法查看到具体代码呢~~
------------我是分割线--------------
基于AVFoundation实现的。
1、效果图
生成界面
扫描界面:
2、环境
ios9.3.2
Xcode7.3(swift 3)
3、生成二维码
~~新建项目~~
A、新建文件:QRCode View.swift , 该文件主要用来生成二维码
B、该文件源码内容如下:
import UIKit
/// 生成二维码
class QRCodeView: UIView
{
/**
- logo
- parameter surperImage: 二维码
- parameter subImage: logo
- parameter postRext: logo位置
- returns: 返回加上logo的图片
*/
private func imageViewAddImage(surperImage: UIImage, subImage: UIImage, postRect:CGRect) -> UIImage
{
创建图像
UIGraphicsBeginImageContext(surperImage.size);
设置坐标
surperImage.drawInRect(CGRect(x:0, y:0, width: surperImage.size.width, height: surperImage.size.height));
surperImage.drawInRect(postRect);
返回一个图像基于当前位图图形
let newImage = UIGraphicsGetImageFromCurrentImageContext();
移除当前位图图形
UIGraphicsEndImageContext();
return newImage;
}
/**
调整大小
- parameter ciImage: 待改变的image
- parameter width: 设置比例系数
- returns: 设置比例后的图片
*/
private func SetSize(ciImage: CIImage, _width:CGFloat) -> UIImage
{
let extent = CGRectIntegral(ciImage.extent);
let scale = min(_width / CGRectGetWidth(extent), _width / CGRectGetHeight(extent));
let width = CGRectGetWidth(extent) * scale;
let height = CGRectGetHeight(extent) * scale;
let cs = CGColorSpaceCreateDeviceGray();
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.None.rawValue);
let bitmapRef = CGBitmapContextCreate(nil, Int(width), Int(height), 8, 0, cs, bitmapInfo.rawValue);
let context = CIContext(options: [kCIContextUseSoftwareRenderer:(true)]);
let bitm