本 文實現(xiàn)的是類似于相冊瀏覽的功能,在這里我準(zhǔn)備了六張圖片,僅供參考。
具體來說,就是首頁有六張小圖片(用九宮格做法實現(xiàn),這里不做詳解),點擊對應(yīng)的圖片去瀏覽對應(yīng)的大圖,在大圖頁面顯示當(dāng)前是第幾張圖片。基本的邏輯就是,當(dāng)我點擊對應(yīng)的小圖的時候,我把對應(yīng)的下標(biāo)傳到大圖界面,并在大圖顯示。同時,當(dāng)我滑動大圖界面的時候我先獲取到當(dāng)前的圖片的位置和偏移量,然后顯示對應(yīng)的圖片和圖上的當(dāng)前頁數(shù)。
是的,基本的邏輯就是這么簡單,我相信只要去寫就能寫出來。但是為了保證不讓控制器的代碼顯得冗余并讓每個模塊的功能獨立出來,我在這里把代碼進(jìn)行了抽離,每個view每一個功能,這樣降低了耦合性并能讓控制的代碼減少很多。
具體的代碼如下:

這個是我的demo的層級結(jié)構(gòu)圖。

這是根視圖控制器里面的代碼。

這是PhotoImageVIew的類方法。

對應(yīng)的類方法的實現(xiàn)。



這對應(yīng)的是PhotoVIew的代碼。
下面是滾動視圖內(nèi)的代碼:





為了抽取功能,我建了分類






在這里面我聲明了一個代理,是為了在我滑動的時候把對應(yīng)的圖片的當(dāng)前的頁數(shù)傳到控制器里面去。

這是滾動視圖控制器的的內(nèi)容。


為了實現(xiàn)對圖片的縮放功能,我又單獨建了一個繼承自scrollVIew的類,目的是為了實現(xiàn)對大圖的縮放功能,實現(xiàn)雙擊對圖片進(jìn)行縮放,單機(jī)圖片回到九宮格小圖界面。同時,這里實現(xiàn)了另一個效果,就是當(dāng)我對某一個圖片進(jìn)行縮放以后,然后滑動到其他圖片,再從其他圖片界面回到被進(jìn)行過縮放的圖片界面的時候,被縮放的圖片恢復(fù)到原狀。為了實現(xiàn)這樣的功能,我得創(chuàng)建一個imageView,目的是記錄我縮放過的圖片,在圖片縮放的時候把它保存起來,然后當(dāng)我從被縮放的界面劃走的時候我再調(diào)用方法,讓被縮放的圖片回到原狀。同時我這里對大圖和小圖做了處理。
我一直覺得,一篇技術(shù)文章沒有demo,那就是在耍流氓。在這附上demo地址:
https://github.com/15221532825/picture-browser
以上僅供參考,謝謝。有不足之處歡迎指正,謝謝!親,記得修改里面pch文件路徑哦!
一個喜歡編碼,追求編碼完美的人,努力保持內(nèi)心的善良與純凈。