Swift實現二維碼掃描和生成
二維碼生成
定義屬性
// 二維碼
var qrView = UIView()
var qrImgView = UIImageView()
// 條形碼
var tView = UIView()
var tImgView = UIImageView()
二維碼、條形碼顯示位置
//MARK: ------二維碼、條形碼顯示位置
func drawCodeShowView()
{
// 二維碼
let rect = CGRectMake( (CGRectGetWidth(self.view.frame)-CGRectGetWidth(self.view.frame)*5/6)/2, 100, CGRectGetWidth(self.view.frame)*5/6, CGRectGetWidth(self.view.frame)*5/6)
qrView.frame = rect
self.view.addSubview(qrView)
qrView.backgroundColor = UIColor.whiteColor()
qrView.layer.shadowOffset = CGSizeMake(0, 2);
qrView.layer.shadowRadius = 2;
qrView.layer.shadowColor = UIColor.blackColor().CGColor
qrView.layer.shadowOpacity = 0.5;
qrImgView.bounds = CGRectMake(0, 0, CGRectGetWidth(qrView.frame)-12, CGRectGetWidth(qrView.frame)-12)
qrImgView.center = CGPointMake(CGRectGetWidth(qrView.frame)/2, CGRectGetHeight(qrView.frame)/2);
qrView .addSubview(qrImgView)
// 條形碼
tView.frame = CGRectMake( (CGRectGetWidth(self.view.frame)-CGRectGetWidth(self.view.frame)*5/6)/2,
CGRectGetMaxY(rect)+20,
CGRectGetWidth(self.view.frame)*5/6,
CGRectGetWidth(self.view.frame)*5/6*0.5)
self.view .addSubview(tView)
tView.layer.shadowOffset = CGSizeMake(0, 2);
tView.layer.shadowRadius = 2;
tView.layer.shadowColor = UIColor.blackColor().CGColor
tView.layer.shadowOpacity = 0.5;
tImgView.bounds = CGRectMake(0, 0, CGRectGetWidth(tView.frame)-12, CGRectGetHeight(tView.frame)-12);
tImgView.center = CGPointMake(CGRectGetWidth(tView.frame)/2, CGRectGetHeight(tView.frame)/2);
tView .addSubview(tImgView)
}
生成二維碼
func createQR1()
{
// qrView.hidden = false
// tView.hidden = true
let qrImg = LBXScanWrapper.createCode("CIQRCodeGenerator",codeString:"pingkeke@163.com", size: qrImgView.bounds.size, qrColor: UIColor.blackColor(), bkColor: UIColor.whiteColor())
let logoImg = UIImage(named: "登陸logo")
qrImgView.image = LBXScanWrapper.addImageLogo(qrImg!, logoImg: logoImg!, logoSize: CGSizeMake(30, 30))
}
生成條形碼
func createCode128()
{
let qrImg = LBXScanWrapper.createCode128("005103906002", size: qrImgView.bounds.size, qrColor: UIColor.blackColor(), bkColor: UIColor.whiteColor())
tImgView.image = qrImg
}
二維碼掃描
func toScan(){
print("toScan")
var style = LBXScanViewStyle() // 設置掃碼區域參數
style.centerUpOffset = 50; // 矩形框(視頻顯示透明區)域向上移動偏移量
style.xScanRetangleOffset = 50; // 矩形框(視頻顯示透明區)域離界面左邊及右邊距離
if UIScreen.mainScreen().bounds.size.height <= 480 {
// 3.5inch 顯示的掃碼縮小
style.centerUpOffset = 40;
style.xScanRetangleOffset = 30;
}
style.red_notRecoginitonArea = 0.4 // 非識別區域顏色,默認 RGBA (0,0,0,0.5),范圍(0--1)
style.green_notRecoginitonArea = 0.4 // 非識別區域顏色,默認 RGBA (0,0,0,0.5),范圍(0--1)
style.blue_notRecoginitonArea = 0.4 // 非識別區域顏色,默認 RGBA (0,0,0,0.5),范圍(0--1)
style.alpa_notRecoginitonArea = 0.4 // 非識別區域顏色,默認 RGBA (0,0,0,0.5),范圍(0--1)
style.photoframeAngleStyle = LBXScanViewPhotoframeAngleStyle.Inner; // 掃碼區域的4個角類型,內嵌,一般不顯示矩形框情況下
style.photoframeLineW = 2.0; // 掃碼區域4個角的線條寬度,默認6,建議8到4之間
style.photoframeAngleW = 16; // 掃碼區域4個角的寬度
style.photoframeAngleH = 16; // 掃碼區域4個角的高度
style.isNeedShowRetangle = false; // 是否需要繪制掃碼矩形框,默認YES
style.anmiationStyle = LBXScanViewAnimationStyle.NetGrid; // 掃碼動畫效果:線條或網格
style.animationImage = UIImage(named: "qrcode_scan_full_net") // 動畫效果的圖像,如線條或網格的圖像
if #available(iOS 8.0, *) {
let vc = LBXScanViewController()
vc.scanStyle = style
self.navigationController?.pushViewController(vc, animated: true)
} else {
// Fallback on earlier versions
}
}