本 文實(shí)現(xiàn)的是類似于相冊(cè)瀏覽的功能党远,在這里我準(zhǔn)備了六張圖片削解,僅供參考。
具體來(lái)說(shuō)沟娱,就是首頁(yè)有六張小圖片(用九宮格做法實(shí)現(xiàn)氛驮,這里不做詳解),點(diǎn)擊對(duì)應(yīng)的圖片去瀏覽對(duì)應(yīng)的大圖济似,在大圖頁(yè)面顯示當(dāng)前是第幾張圖片矫废。基本的邏輯就是碱屁,當(dāng)我點(diǎn)擊對(duì)應(yīng)的小圖的時(shí)候磷脯,我把對(duì)應(yīng)的下標(biāo)傳到大圖界面,并在大圖顯示娩脾。同時(shí)赵誓,當(dāng)我滑動(dòng)大圖界面的時(shí)候我先獲取到當(dāng)前的圖片的位置和偏移量,然后顯示對(duì)應(yīng)的圖片和圖上的當(dāng)前頁(yè)數(shù)。
是的俩功,基本的邏輯就是這么簡(jiǎn)單幻枉,我相信只要去寫(xiě)就能寫(xiě)出來(lái)。但是為了保證不讓控制器的代碼顯得冗余并讓每個(gè)模塊的功能獨(dú)立出來(lái)诡蜓,我在這里把代碼進(jìn)行了抽離熬甫,每個(gè)view每一個(gè)功能,這樣降低了耦合性并能讓控制的代碼減少很多蔓罚。
具體的代碼如下:
這個(gè)是我的demo的層級(jí)結(jié)構(gòu)圖椿肩。
這是根視圖控制器里面的代碼。
這是PhotoImageVIew的類方法豺谈。
對(duì)應(yīng)的類方法的實(shí)現(xiàn)郑象。
這對(duì)應(yīng)的是PhotoVIew的代碼。
下面是滾動(dòng)視圖內(nèi)的代碼:
為了抽取功能茬末,我建了分類
在這里面我聲明了一個(gè)代理厂榛,是為了在我滑動(dòng)的時(shí)候把對(duì)應(yīng)的圖片的當(dāng)前的頁(yè)數(shù)傳到控制器里面去。
這是滾動(dòng)視圖控制器的的內(nèi)容丽惭。
為了實(shí)現(xiàn)對(duì)圖片的縮放功能击奶,我又單獨(dú)建了一個(gè)繼承自scrollVIew的類,目的是為了實(shí)現(xiàn)對(duì)大圖的縮放功能责掏,實(shí)現(xiàn)雙擊對(duì)圖片進(jìn)行縮放柜砾,單機(jī)圖片回到九宮格小圖界面。同時(shí)拷橘,這里實(shí)現(xiàn)了另一個(gè)效果局义,就是當(dāng)我對(duì)某一個(gè)圖片進(jìn)行縮放以后喜爷,然后滑動(dòng)到其他圖片冗疮,再?gòu)钠渌麍D片界面回到被進(jìn)行過(guò)縮放的圖片界面的時(shí)候,被縮放的圖片恢復(fù)到原狀檩帐。為了實(shí)現(xiàn)這樣的功能术幔,我得創(chuàng)建一個(gè)imageView,目的是記錄我縮放過(guò)的圖片湃密,在圖片縮放的時(shí)候把它保存起來(lái)诅挑,然后當(dāng)我從被縮放的界面劃走的時(shí)候我再調(diào)用方法,讓被縮放的圖片回到原狀泛源。同時(shí)我這里對(duì)大圖和小圖做了處理拔妥。
我一直覺(jué)得,一篇技術(shù)文章沒(méi)有demo达箍,那就是在耍流氓没龙。在這附上demo地址:
https://github.com/15221532825/picture-browser
以上僅供參考,謝謝。有不足之處歡迎指正硬纤,謝謝解滓!親,記得修改里面pch文件路徑哦筝家!
一個(gè)喜歡編碼洼裤,追求編碼完美的人,努力保持內(nèi)心的善良與純凈溪王。