思路如下:
1.把不固定的部分(這里指展示的正文和圖片整體)抽象出來
2.把這部分寫到一個(gè)單獨(dú)的類當(dāng)中(在這個(gè)類中添加手勢和代理)
3.把這個(gè)帶有管理屬性的View晦溪,整體的加到我們訂制的cell里面
4.并且在cell類當(dāng)中要將view的model單獨(dú)求出來一死,然后重新寫set的方法
如果這樣做4放闺,我們就可以在5中做如下操作
5.在展示cell的ViewController中垢油,UITableViewCell的展示cell的代理方法中壕探,我們需要將這個(gè)model求出來飘诗,根據(jù)tag值刪除這個(gè)管理屬性的View(防止出現(xiàn)重用問題),給cell的屬性model賦值--》就會(huì)自動(dòng)調(diào)用4當(dāng)中的set方法
這樣展示就沒有問題了与倡,當(dāng)然其中的問題就是計(jì)算它們的frame
6.展示出來Ok,能拿到NSIndexPath 和,對應(yīng)path的圖片的tag值疚察,一切就都有了線索 6作為一個(gè)過渡蒸走,下面執(zhí)行操作7
7 在2根據(jù)model創(chuàng)建View的時(shí)候要添加手勢,并要暴露一個(gè)接口(也就是代理)貌嫡,讓其他類拿到它執(zhí)行操作
刪除管理屬于的view比驻,什么意思该溯?就是刪除不定的那個(gè)View整體,我這里是為了防止重用問題别惦,這塊有待商榷
接下來收拾展示部分
展示我們是用瀑布流橫向滑動(dòng)狈茉,所以需要定制一下cell,來展示出我們特定的內(nèi)容
8 定制展示的cell掸掸,添加手勢氯庆,并在解鎖手勢響應(yīng)的時(shí)候并寫一個(gè)代理,這個(gè)接口暴露是為了點(diǎn)擊返回做一系列的動(dòng)作(這里有返回和動(dòng)畫)
這樣基本就搞定了一大部分扰付,骨架就有了堤撵,下面就是具體的展示過程實(shí)現(xiàn)
9.創(chuàng)建要展示的這個(gè)瀑布流的ViewController,這里也有重點(diǎn)羽莺,而且是很繞的
是動(dòng)畫的實(shí)現(xiàn)我們需要怎么構(gòu)建呢实昨?
10.我們需要一個(gè)UIImageView 成員變量,和記錄當(dāng)前的pag 的NSInteger 的成員變量
11.這是我們的成員變量盐固,我們還需要添加代理荒给,就是在它消失前和消失后
12.我們在UITableViewCell? 展示的那個(gè)ViewController 中,響應(yīng)了點(diǎn)擊的代理刁卜,并根據(jù)它的path 和tag? 找到我們的改組的img的URL志电,還有求出它的轉(zhuǎn)換過來的相對ViewController的frame的數(shù)組,將瀑布流的ViewController的delegate設(shè)置為self蛔趴,傳遞這倆個(gè)屬性
13.拿到屬性之后挑辆,求它的原寬高比的高,重新調(diào)用8的cell的rect展示
這樣可以就大圖展示了夺脾,接下來給它響應(yīng)回去的代理方法
14.響應(yīng)cell的back的代理方法之拨,在瀑布流的viewDidApplear 里創(chuàng)建,放大咧叭,并展示cell蚀乔,然后隱藏
這樣就能看,還能滑動(dòng)菲茬,看完還能回去吉挣,基本就完成了,但是我們可以給他潤色一下婉弹,就會(huì)好玩一些睬魂,那么就是響應(yīng)動(dòng)畫了
動(dòng)畫的響應(yīng)就是用一個(gè)imageView來搞,就是10當(dāng)中的UIImageView的成員變量镀赌,和12傳遞過來的rect的數(shù)組做原料了
這個(gè)I'mgView 僅負(fù)責(zé)動(dòng)畫氯哮,負(fù)責(zé)創(chuàng)建,放大商佛,隱藏喉钢,縮小姆打,移除,但是它的這些生命周期是怎么演變的肠虽,就是一個(gè)時(shí)機(jī)火候的問題了幔戏,我覺得是,所以執(zhí)行14了
15在 在瀑布流的viewDidApplear 里創(chuàng)建的dismiss前我們要拿到瀑布流的當(dāng)前page税课,這樣才能拿到他的rect,在cell的點(diǎn)擊回退的代理方法時(shí)闲延,讓本ViewController的delegate? 響應(yīng) 他的afterdismiss方法
經(jīng)過14 我們能動(dòng)畫放大,經(jīng)過15我們把消失的步已經(jīng)布好了韩玩,需要在消失前把改ViewController的img成員熟悉傳給回退到的ViewContller
現(xiàn)在只剩一步
回到UITableViewCell展示的ViewController里執(zhí)行16就Ok了
16.響應(yīng)瀑布流的ViewController的代理方法垒玲,dismissViewController的after方法,讓傳過來的ImgView縮小啸如,在動(dòng)畫結(jié)束后侍匙,removeFromSuper
伴隨著做動(dòng)畫的這個(gè)主角imageView的創(chuàng)建氮惯,放大叮雳,隱藏,傳遞妇汗,縮小帘不,移除。動(dòng)畫的一生也就過完了
一切又回歸了平靜......