第一部分:二維碼生成
關(guān)于二維碼的生成有很多第三方插件搓萧,本次demo主要使用libqrencode來實(shí)現(xiàn)二維碼生成
需先導(dǎo)入頭文件libqrencode/QRCodeGenerator.h
二維碼本質(zhì)上來說是一張圖片杂数,所以先生成一張圖片,以下為代碼
此時生成的只是一個UIImage對象矛绘,此后我們需要對該對象的大小進(jìn)行調(diào)整耍休,調(diào)整的尺度在于我們最終要顯示的圖片的大小(PS:一般而言二維碼圖片是一張正方形圖片)货矮,以下為代碼
這個時候其實(shí)已經(jīng)完成了二維碼的生成羊精,但是有些情況下我們可能覺得生成的二維碼顏色不是很滿意。如果你想自定義自己的二維碼顏色囚玫,這個時候你需要對其進(jìn)行顏色填充
此時我們已經(jīng)完成了二維碼的生成工作
第二部分:二維碼的掃描
二維碼的掃描需要引入系統(tǒng)的AVFoundation/AVFoundation.h文件喧锦,同時需要遵守AVCaptureMetadataOutputObjectsDelegate協(xié)議。
對于二維碼的掃描比較簡單抓督,唯一需要注意的一點(diǎn)是關(guān)于掃碼范圍的限制燃少。二維碼識別范圍是rectOfInterest這個CGRect類型的量,但是需要這個CGRect和我們平常使用的坐標(biāo)系不同铃在,蘋果API是這么描述的
大意是說這個變量是個比例尺度的變量阵具,并且坐標(biāo)系和我們平常使用的是相反。比如你想在坐標(biāo)系統(tǒng)中將掃碼范圍定在(x,y,w,h)的位置定铜,這時你在這個坐標(biāo)系下要這么輸入(y/H,x/W,h/H,w/W)?(PS:此處W是父容器的寬度,H是父容器的高度)阳液。個人對于這個坐標(biāo)的理解是正常坐標(biāo)系統(tǒng)的鏡像坐標(biāo)
如果諸位有啥不明白的可以看gitHub