Swift之手勢解鎖

2021-07-08 12:17:34 字數 2056 閱讀 5368

1、繪製九宮格樣式的按鈕組

//建立九宮格按鈕組

func createbutton()

var secret = 0

for row in

0...2

for col in

0...2

//設定九個按鈕的位置,

let buttondistance = 100

//間距

let firstbtnpointx = 0

//第乙個按鈕的x

let firstbtnpointy = 0

//第乙個按鈕的y

let tempx:(cgfloat) =cgfloat(firstbtnpointx + col*buttondistance)

let tempy:(cgfloat) =cgfloat(firstbtnpointy + row*buttondistance)

//宣告按鈕

let btn:(uibutton) =uibutton(type:uibuttontype.custom)

btn.userinteractionenabled = false

//關閉使用者互動

btn.frame = cgrectmake(tempx, tempy, 80, 80)//

按鈕位置和大小設定

btn.setimage(uiimage(named:"gesture_node_normal"), forstate:uicontrolstate.normal)//預設

btn.setimage(uiimage(named:"gesture_node_highlighted"), forstate:uicontrolstate.selected)//選中

btn.tag = secret++ //

用來當作密碼

0-8

self.addsubview(btn)

2、根據觸控獲取的座標點獲取按鈕

首先根據事件傳入的set獲取當前試圖中觸控點的位置,在根據觸控點的位置獲取按鈕。

//獲取位置傳入當前觸控的檢視

let pos:(cgpoint) = (touch?.locationinview(touch!.view))!

//遍歷當前view的子檢視獲取按鈕

for btninself.subviews

if cgrectcontainspoint(btn.frame, point)

return btn as? uibutton

3、根據手勢滑動經過的按鈕座標繪製線

1)需要先定義乙個儲存紀動經過按鈕的資料

2)繪製線條需要監聽3個事件分別是:觸控開始、觸控移動、觸控結束將經過的按鈕儲存到陣列中。每次事件結束需要呼叫self.setneedsdisplay()來繪製檢視

3)使用uibezierpath物件來繪製連線線:

override

func drawrect(rect:cgrect) {

//沒有按鈕 if

self.btnselectarr.count ==0

return

//直接返回

//有按鈕,則繪製

letpath:(uibezierpath) =uibezierpath()

//建立路徑

for index in

0...self.btnselectarr.count -1

let btn:(uibutton) =self.btnselectarr.objectatindex(index)as!uibutton

//第乙個按鈕(每次會在的起點)

if index == 0

path.movetopoint(btn.center)//

從第乙個按鈕開始移動

else

path.addlinetopoint(btn.center)//連線

path.linewidth = 8

//線寬

uicolor.bluecolor().set()//顏色

path.stroke()//繪製

原始碼: (提取碼:3563)

手勢解鎖demo

import lsbackview.h inte ce lsbackview property nonatomic,strong nsmutablearray btnarray property nonatomic,strong nsmutablearray selectionarray prope...

canvas手勢解鎖思路

參考 基本要求是這樣的 將密碼儲存到 localstorage 裡,開始的時候會從本地讀取密碼,如果沒有就讓使用者設定密碼,密碼最少為五位數,少於五位要提示錯誤。需要對第一次輸入的密碼進行驗證,兩次一樣才能保持,然後是驗證密碼,能夠對使用者輸入的密碼進行驗證。一 新建畫布,指定寬度,每行排列3個圓,...

android手勢解鎖說明

購買了g1的發現自己的螢幕解鎖方式是按下menu鍵,似乎沒有看到android手勢解鎖這個比較酷的功能,我們完全可以自己設定t mobile g1來開啟手勢解鎖功能,在android作業系統中由9個點組成的,可以根據不同的方向連續滑動出圖形,所以在圖形組合上面有很多種方式,這樣可以不用 輸入繁瑣的密...