資源描述:
《ios開(kāi)發(fā)ui篇—實(shí)現(xiàn)一個(gè)簡(jiǎn)單的手勢(shì)解鎖應(yīng)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、iOS幵發(fā)UI篇一實(shí)現(xiàn)一個(gè)簡(jiǎn)單的手勢(shì)解鎖應(yīng)用一、實(shí)現(xiàn)效果實(shí)現(xiàn)效果圖:二、手勢(shì)解鎖應(yīng)用分析1.監(jiān)聽(tīng)手指在view上的移動(dòng),首先肯定需要自定義一個(gè)view,重寫touchbegan,touchmove等方法,當(dāng)手指移動(dòng)到圈上時(shí),讓其變亮??梢酝ㄟ^(guò)button按鈕來(lái)實(shí)現(xiàn)。2.界面搭建背景圖片(給控制器的view添加一個(gè)imageview,設(shè)置屬性背景圖片)九個(gè)按鈕(把九個(gè)按鈕作為一個(gè)整體,使用一個(gè)大的view來(lái)管理這些小的view,這壁小的view就是9個(gè)button。如果使用手動(dòng)拖控件的方式實(shí)現(xiàn)頁(yè)面搭建,那么9個(gè)按鈕需要拖拽九次,且需要對(duì)齊,不靈活,這里選擇使用以【九宮格】代碼的方式
2、創(chuàng)建9個(gè)按鈕)。3.新建一個(gè)類,對(duì)自定義的view進(jìn)行管理,這個(gè)view是從storyboard創(chuàng)建出來(lái)的,會(huì)調(diào)用aweakframe方法和initwithcoder方法,后者先調(diào)用因此把創(chuàng)建按鈕的代碼寫在這個(gè)方法中。部分代碼:1//界面搭建2-(id)initWithFrame:(CGRect)frame3{4self=[superinitWithFrame:frame];5if(self){6[selfsetup];7}8returnself:9}10ll-(id)initWithCoder:(NSCoder氺)aDecoder12{13if(self=[superinitW
3、ithCoder:aDecoder]){14[selfsetup]:15}16returnself;17}18//在界面上創(chuàng)建9個(gè)按鈕19-(void)setup20{21//1.創(chuàng)建9個(gè)按鈕22for(inti=0:ilt;9;i++){23UIButton*btn=[UIButtonbuttonWithType:UIButtonTypeCustom]:24//2.設(shè)置按鈕的狀態(tài)背景25[btnsetBackgroundlmage:[UllmageimageNamed:〃gesture_node_normal〃]forState:UlControlStateNormal]:26
4、[btnsetBackgroundlmage:[UllmageimageNamed:z/gesture_nodehighlighted"]forState:UlControlStateSelected];27//3.把按鈕添加到視圖中28[selfaddSubview:btn];29//4.禁止按鈕的點(diǎn)擊事件30btn.userlnteractionEnabled=N0;31}32}注意點(diǎn):在initwithcoder:方法中一定要先對(duì)父類進(jìn)行初始化。說(shuō)明:當(dāng)視圖從xib或storyboard中創(chuàng)建出來(lái)會(huì)調(diào)用initwithcoder:方法,如果視圖是通過(guò)代碼創(chuàng)建出來(lái)的,那么就會(huì)
5、調(diào)用initwithFrame:方法。提示:使用代碼創(chuàng)建視圖,即便是調(diào)用init方法而不是直接調(diào)用nitwithFrame:方法,init方法內(nèi)部也會(huì)調(diào)用nitwithFrame:方法。建議:如果重寫view的話,建議同時(shí)重寫這兩個(gè)方法。調(diào)用,【selfsetup】三、實(shí)現(xiàn)基本連線步驟:1.創(chuàng)建按鈕2.設(shè)置按鈕的背景圖片(默認(rèn)狀態(tài)__選中狀態(tài))3.添加按鈕到view提示:不要在構(gòu)造方法中設(shè)置按鈕的frame,因?yàn)檫@個(gè)方法是在構(gòu)造方法中調(diào)用的,而在構(gòu)造方法中獲取不了frame。4.在layoutSubviews中設(shè)置按鈕的frame。(提示:一定要先調(diào)用父類的layoutSubvi
6、ews)4.1取出對(duì)應(yīng)位置的按鈕4.2設(shè)置每個(gè)按鈕的frame5.監(jiān)聽(tīng)手指的移動(dòng)。分析程序,應(yīng)該監(jiān)聽(tīng)手指的移動(dòng),而不是按鈕的點(diǎn)擊,當(dāng)手指移動(dòng)到按鈕的范圍內(nèi)時(shí),讓按鈕變亮。5.1重寫touchesbegan…方法(1)獲取按下的點(diǎn)(2)判斷觸摸的位置是否在按鈕的范圍內(nèi)(使用超級(jí)for循環(huán))提示:一個(gè)判斷點(diǎn)是否在指定范圍內(nèi)的方法CGRectContainsPoint(,);5.2重親斤touchesmoved…方法說(shuō)明:當(dāng)手指移動(dòng)到按鈕上的時(shí)候,按鈕變亮,因此需要重寫touchesmoved方法。(1)獲取觸摸的點(diǎn)(2)判斷觸摸的點(diǎn)是否在按鈕的范圍內(nèi)。提示:可以把上面兩個(gè)功能分別進(jìn)行
7、封裝,在使用的時(shí)候直接調(diào)用即可。封裝代碼:1//對(duì)功能點(diǎn)進(jìn)行封裝2-(CGPoint)getCurrentPoint:(NSSet*)touches3{4UITouch氺touch=[touchesanyObject]:5CGPointpoint=[touchlocationlnView:touch,view]:6returnpoint;7}89-(UIButton*)getCurrentBtnWithPoint:(CGPoint)point10{llfor(UIButton*b