iOS 小的Demo 簡單的手勢解鎖實現

2021-10-05 11:35:35 字數 2718 閱讀 4603

晴川歷歷漢陽樹,芳草萋萋鸚鵡洲!《好運蛋》

先上效果圖:

密碼是3548

前奏: 這個可以說是在簡易的畫板之上, 增加一些判斷就可以完成, 首先我們肯定需要九個圓圈的放置, 我思考的就是用九個 uiview 迴圈的方法布置一下各自位置!

畫圖: 乙個簡單的想法就是, 在九個 view 所屬的大 view 畫線, 只要經過任意乙個圓圈所屬的範圍我們就把他的顏色改變, 並且記錄一下狀態(避免重複選中). 問題是第一筆如不在任乙個圓圈的範圍的話, 那麼我們就不能畫線, 這就是說要判斷起始點是否在九個圓圈的範圍中! 還有一些其他的問題我們可以遇到了在解決.

開始: 現在就是布局九個 uiview, 每次依其中乙個圓圈開始畫圖 , 觸及到乙個圓圈就選中乙個圓圈

// 重寫陣列的 getter 方法 懶載入

- (nsmutablearray*)patharray

return _patharray;

}```

- 第 1 步: 自定義乙個承載的 uiview 類 這裡是 signview 此時我們宣告幾個屬性

```code

// 在這裡先定義幾個屬性

# 記錄路徑的陣列 用於畫圖

@property (strong, nonatomic) nsmutablearray *patharray;

# 定義乙個零時路徑變數 接受中間遊走的路徑 這個不能放到了路徑陣列裡面 用於不是兩個圓圈之間的畫線

@property (strong, nonatomic) uibezierpath *temppath;

# 每次點亮乙個圓圈 我就放到陣列裡面 記錄選中順序 組合成密碼

@property (strong, nonatomic) nsmutablearray *runningnumviews;

注意: 我們獲取到密碼之後, 需要告訴外界我們的密碼是多少! 當然我們可以寫個. h屬性去記錄然後到最後圖案畫好之後傳遞個需要的地方就行, 這裡我寫乙個協議**方法, 當繪製完畢之後**人可以通過方法得到想要的資料! 稍後有體現!

@protocol signviewdelegate # 宣告協議方法

- (void)singnview:(signview *)singnview getpasswordresultwith:(nsstring *)signpassword;

@end

# .h中宣告乙個屬性**

@property (assign, nonatomic) iddelegate;

- (void)createsubview}}

- (instancetype)initwithframe:(cgrect)frame

return self;

}```

- 並列2.1 視覺化程式設計時候 構建子檢視

```code

- (void)awakefromnib

```- 第 3 步: 在觸控開始的方法中獲取開始點並且要判斷是否在九個圓圈的範圍中, 還要考慮的問題是, 第二次繪製的時候, 要在這裡進行對資料重新清空再次繪製不同任務.

```code

- (void)touchesbegan:(nsset*)touches withevent:(uievent *)event

// 獲取觸控的第乙個為開始點

_pointforbegin = [touches.anyobject locationinview:self];

// 遍歷檢查一下開始點是否是在 九個圓圈中某乙個的範圍中

for (uiview *subview in self.subviews)}}

- (void)touchesmoved:(nsset*)touches withevent:(uievent *)event}}

// 不要忘了 去渲染繪製一下

[self setneedsdisplay];

}

- (void)touchesended:(nsset*)touches withevent:(uievent *)event

// 這裡去呼叫**方法 向外界傳遞繪製的結果

if (resulet && ![resulet isequaltostring:@""])

}

// 重新繪圖

- (void)drawrect:(cgrect)rect

// 臨時路徑渲染

self.temppath.linewidth = 6;

[[uicolor bluecolor] set];

[self.temppath stroke];

}

- (void)singnview:(signview *)singnview getpasswordresultwith:(nsstring *)signpassword

completion:^(bool finished) ];}}

iOS 小Demo 簡單籃球沿軌跡動畫

西北望鄉何處是,東南見月幾回圓。昨風一吹無人會,今夜清光似往年!白海師 來句廢話吧,今天好像是中秋啊!想起打球的時候,於是寫乙個籃球運動的軌跡動畫吧,很簡單!效果圖 籃球軌跡運動.gif 實現思路 補充 上 uibezierpath path uibezierpath bezierpath path...

帶手勢滑動的日曆Demo

該日曆是用gridview來寫的,其實跟普通的日曆相比就增加了乙個通過手勢來拖動頁面的效果,那這個手勢gesture在android裡是如何實現的呢?接下來我就為大家展示一下改程式的主要核心 以及解析.首先看一下效果圖 首先要建立乙個gesturelistener類來繼承 ongesturelist...

帶手勢滑動的日曆Demo

該日曆是用gridview來寫的,其實跟普通的日曆相比就增加了乙個通過手勢來拖動頁面的效果,那這個手勢gesture在android裡是如何實現的呢?接下來我就為大家展示一下改程式的主要核心 以及解析.首先看一下效果圖 首先要建立乙個gesturelistener類來繼承 ongesturelist...