今天遇到個棘手的問題,記錄下解決方案,(記錄時間2017.07.24,下面提到的效果,有可能隨著改版換掉。。。。)
因為項目中有需要用到WMPageController這個第三方框架來解決類似網(wǎng)銀新聞那樣的滑動切換問題,這個框架使用非常方便,功能也很強大(在這里推薦一下這個框架,真的 很好用,一般的需求都能滿足,除非很變態(tài)的像我今天遇到的這樣的)。關(guān)于這個框架的使用,非常的簡單,下載個呆哞看下就行,坐著寫的很詳細,網(wǎng)上也有很多了,等這兩天我整理下項目中用到的,再寫出來一篇文章供大家參考,好東西一定要分享。
我們的需求
我們的需求是類似之前淘寶的詳情那樣,上滑看下一頁的詳情(現(xiàn)在不是這個效果了)。上面那一頁是個一般的VC,很正常,上滑后那一頁就變態(tài)了,還要左右滑動切換,我用WMPageController這個框架來做了,按照之前其他地方的模式,各種屬性都設(shè)置好了之后,發(fā)現(xià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];
仍然存在的問題
點返回的時候,還是之前的返回動畫,這個地方如果改成從上到下的回去就更加完美了。如果哪位大神知道如何改的話,請不吝賜教!!!
這個效果在很多APP上都有,例如 祺天優(yōu)貸、團貸網(wǎng) 這些APP。團貸網(wǎng)是完全符合需求的做飯,但他下面的是webView,這種方式也能實現(xiàn),之前版本就是這樣,現(xiàn)在要用原生寫,就很尷尬了。還有就是祺天優(yōu)貸這個APP,詳情里面的方式跟我現(xiàn)在的方式是一樣的。
急著下班回家,文筆不好請多多包涵。