項(xiàng)目中用到了圓形驗(yàn)證碼輸入框,輸入框之間要求有一定的距離,UI圖如下:

UI圖
- 上面的UI圖主要有以下幾個(gè)要求:
- 輸入框?yàn)閳A形
- 輸入框之間有適當(dāng)距離
- 輸入框顏色在輸入文本時(shí)有變化
剛開(kāi)始想著用固定的幾個(gè) UITextField 實(shí)現(xiàn),但轉(zhuǎn)念一想,用 UITextField 實(shí)現(xiàn)有點(diǎn)麻煩(輸入框多的話,它們之間的響應(yīng)事件不太容易控制,需要來(lái)回變換),于是開(kāi)始想其它辦法,最后用了以下的思路:
- 創(chuàng)建一個(gè) UITextField,用 UILabel 顯示 UITextField 上輸入的數(shù)字,需要監(jiān)聽(tīng)文本的輸入,同時(shí)對(duì) UILabel 進(jìn)行一些操作,再用 block 將輸入的文本傳出來(lái)。
封裝的圓形輸入框主要實(shí)現(xiàn)了以下功能:輸入框的數(shù)量、距離、顏色、大小等都可以自行設(shè)定,用起來(lái)也很方便,只需以下幾行代碼即可:
NNValidationCodeView *view = [[NNValidationCodeView alloc] initWithFrame:CGRectMake(80, 100, 300, 45) andLabelCount:4 andLabelDistance:10];
[self.view addSubview:view];
view.changedColor = [UIColor yellowColor];
view.codeBlock = ^(NSString *codeString) {
NSLog(@"驗(yàn)證碼:%@", codeString);
};
這是 demo 的效果圖:

效果圖1

效果圖2
由于代碼很容易看懂,另外代碼中也寫(xiě)了注釋,因此這里不再對(duì)項(xiàng)目做過(guò)多的陳述,這是 demo地址,需要的話可以拿去借鑒,有什么不足之處希望能留下寶貴意見(jiàn)或建議!