今天遇到個棘手的問題恋拷,記錄下解決方案资厉,(記錄時間2017.07.24,下面提到的效果蔬顾,有可能隨著改版換掉宴偿。。诀豁。窄刘。)
因為項目中有需要用到WMPageController這個第三方框架來解決類似網(wǎng)銀新聞那樣的滑動切換問題,這個框架使用非常方便舷胜,功能也很強大(在這里推薦一下這個框架娩践,真的 很好用,一般的需求都能滿足烹骨,除非很變態(tài)的像我今天遇到的這樣的)翻伺。關(guān)于這個框架的使用,非常的簡單沮焕,下載個呆哞看下就行吨岭,坐著寫的很詳細(xì),網(wǎng)上也有很多了峦树,等這兩天我整理下項目中用到的辣辫,再寫出來一篇文章供大家參考,好東西一定要分享空入。
我們的需求
我們的需求是類似之前淘寶的詳情那樣络它,上滑看下一頁的詳情(現(xiàn)在不是這個效果了)。上面那一頁是個一般的VC歪赢,很正常,上滑后那一頁就變態(tài)了单料,還要左右滑動切換埋凯,我用WMPageController這個框架來做了,按照之前其他地方的模式扫尖,各種屬性都設(shè)置好了之后白对,發(fā)現(xiàn),出了個很嚴(yán)重的問題换怖。甩恼,類似這樣的。
結(jié)構(gòu)是這樣的:
事實上我三個控制器設(shè)置的背景色都不一樣,只顯示出來了第一個条摸,往右滑動顯示的白色并不是的悦污,看上面的標(biāo)題就能看出來《て眩滑動是失效的切端,并且點擊上面的按鈕也不起作用,我排查了下 框架用的沒問題顷啼,我估計是因為我放在了ScrollView上面的原因踏枣,因為這個框架底層應(yīng)該也是ScrollView,瞬間懵逼钙蒙,趕緊去git上發(fā)了issue茵瀑。可能作者設(shè)計這套框架的時候沒在這個上面試過吧躬厌,但是還得做出來啊马昨,暫時沒有好的解決辦法,于是跟UI 商量了下烤咧,改了下偏陪,讓頁面上滑的時候,push到一個新的控制器(下頁的控制器)煮嫌,而不是在ScrollView上了笛谦,這樣的話框架沒有在ScrollView上就能正常使用了。改變后的效果是這樣的:
昌阿,
思路
我當(dāng)時的思路是上滑的時候push一個新的控制器饥脑,這樣是肯定行的,但是問題就是push的方向有點蛋疼懦冰,一般的push吧灶轰,跳的痕跡太明顯,取消跳轉(zhuǎn)動畫太突兀刷钢,于是我想 如果讓push方向從下往上就好點了笋颤。
解決方法是這位大濕的,我試了下内地,很好用伴澄。
導(dǎo)入
import <QuartzCore/QuartzCore.h>
在Build Phases里面加入QuartzCore.framework這個庫。
CATransition* transition = [CATransition animation];
transition.type = kCATransitionPush;//可更改為其他方式
transition.subtype = kCATransitionFromTop;//可更改為其他方式
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[self.navigationController pushViewController:secondVC animated:NO];
仍然存在的問題
點返回的時候阱缓,還是之前的返回動畫非凌,這個地方如果改成從上到下的回去就更加完美了。如果哪位大神知道如何改的話荆针,請不吝賜教3ㄎ恕0湓恪!
這個效果在很多APP上都有喉悴,例如 祺天優(yōu)貸棱貌、團(tuán)貸網(wǎng) 這些APP。團(tuán)貸網(wǎng)是完全符合需求的做飯粥惧,但他下面的是webView键畴,這種方式也能實現(xiàn),之前版本就是這樣突雪,現(xiàn)在要用原生寫起惕,就很尷尬了。還有就是祺天優(yōu)貸這個APP咏删,詳情里面的方式跟我現(xiàn)在的方式是一樣的惹想。
急著下班回家,文筆不好請多多包涵督函。