最近為了熟悉swift,寫了一個(gè)小demo,記錄一下swift中遇到的坑和常用的問(wèn)題
項(xiàng)目結(jié)果在最后:
1.搭建環(huán)境
在storyboard中,創(chuàng)建3個(gè)btn,設(shè)置密碼、驗(yàn)證密碼、修改密碼
2.創(chuàng)建手勢(shì)顯示DrawController,使用xib,搭建界面
2.1 創(chuàng)建2個(gè)lab,第一個(gè)lab顯示,不同的type用;第二個(gè)lab,根據(jù)type提示內(nèi)容.
2.2 在視圖中,添加一個(gè)空白View,之后顯示手勢(shì)視圖,命名為DrawView
2.3 在DrawController下面,創(chuàng)建忘記密碼Btn,用作返回
并在文件中,創(chuàng)建全局變量:
3.返回到ViewController中,創(chuàng)建btn的點(diǎn)擊事件,用tag標(biāo)示,使用摸態(tài)視圖
注意:?在swift中,默認(rèn)不會(huì)關(guān)聯(lián)xib,需要開發(fā)人員手動(dòng)設(shè)置
用代碼實(shí)現(xiàn)相關(guān)的內(nèi)容:
3.1 在viewController中的內(nèi)容已經(jīng)處理完成。
4.回到DrawViewController中
4.1添加兩個(gè)全局變量
//根據(jù)tag值進(jìn)行不同加載
var whTag =0
var updateTag =0//修改用到
4.2 在viewWillAppear中,根據(jù)tag實(shí)現(xiàn)lab的顯示
5.在自定義顯示手勢(shì)的DrawView中,需要?jiǎng)?chuàng)建內(nèi)容來(lái)顯示手勢(shì)按鈕,用代碼實(shí)現(xiàn),記住在DrawController.xib中綁定DrawView
5.1 swift中默認(rèn)是不會(huì)有值得,需要?jiǎng)?chuàng)建值
var btnSelectArr:(NSMutableArray) = [] //保存獲取到的按鈕集合
5.2 swift中必須要實(shí)現(xiàn)的方法,在這個(gè)里面才能調(diào)用函數(shù)等內(nèi)容
required init?(coder aDecoder:NSCoder) {
super.init(coder: aDecoder)
crateBtn() ?}?
5.3 創(chuàng)建手勢(shì)btn,還是比較簡(jiǎn)單的
改函數(shù),需要放到上面調(diào)用.
5.4 下面做手勢(shì)的功能
在做手勢(shì)前,需要了解,觸摸的三個(gè)步驟,touchesBegan,touchesMoved,touchesEnded,
首先,我們要獲取觸摸點(diǎn),得到觸摸點(diǎn)之后,在通過(guò)CGPoint,獲取到btn,所以要?jiǎng)?chuàng)建兩個(gè)函數(shù)
第一個(gè):
第二個(gè):
首先在觸摸開始中:
通過(guò)函數(shù)獲取到btn,并判斷有沒(méi)有,在存到集合當(dāng)中
在觸摸移動(dòng)的過(guò)程中:
同樣通過(guò)函數(shù)獲取到btn,判斷btn 的選中狀態(tài)和是否為空,存到集合中
在觸摸結(jié)束時(shí):
需要?jiǎng)?chuàng)建一個(gè)delegate,使用str把所選擇的btn,拼接到str中,所以參數(shù)為,當(dāng)前對(duì)象,和路徑path,最后會(huì)在DrawController中調(diào)用
6.處理好手勢(shì)后,我們就需要把手勢(shì)給繪制出來(lái)
創(chuàng)建一個(gè)函數(shù)處理btn狀態(tài)
7.回到DrawViewController,添加DrawView的代理協(xié)議,跟OC不同的是,swift添加代理后,必須實(shí)現(xiàn)函數(shù),不然會(huì)報(bào)錯(cuò)
在UIViewControllerh后,添加代理drawViewDelegate
在下面實(shí)現(xiàn)代理函數(shù)
最后實(shí)現(xiàn)了:手勢(shì)截屏的功能
到此,大部分代碼就是這樣,最后演示一下效果: