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