最近做項目的時候,產(chǎn)品提出App中的物品詳情界面要做一個類似淘寶下拉加載更多的樣式!
類似于這樣~~~↓↓↓↓↓↓↓↓
當時思考了下,這到底是一個界面還是兩個界面!仔細滑動了幾下淘寶的界面。發(fā)現(xiàn)這其實就是一個界面的scrollview滑動!!
整體視圖層級是這樣的——最底層是一個scrollView,這個scrollview上面是用來放第一個view的,然后在這個scrollview上面放一個scrollview,放在第一個view的下面,第二個scrollview上面放第二個view(也就是詳情頁)。大體層級關(guān)系是這樣~↓↓↓↓↓↓↓↓↓
好噠!!弄清這個層級關(guān)系我們就知道該怎么著手開始寫了!!
封裝一個類~!TheXXScrollDetailView
.h文件中聲明:
枚舉用來判斷是哪個view!TheXXScrollDetailView用來放需要加載的兩個頁面!
在.m文件中:
需要說明的是xib上半部分和下半部分是中間的過度提示~!↓↓↓↓↓↓
set方法↓↓↓↓↓↓↓↓↓↓
其中:
#define H_SELF self.frame.size.height
#define W_SELF self.frame.size.width
設置最小高度和兩個scrollview的contentsize。tips:在設置secondscrollview的contentsize+0.001是為了防止當scrollview的contentsize等于或小于scrollview的frame造成scrollview不能滑動的情況。
封裝的初始化方法這么寫:↓↓↓↓↓↓↓↓↓↓↓↓↓↓
這個初始化方法中用來實例化兩個scrollview和上面截圖的過度界面。
接下來就是scrollview的代理方法了↓↓↓↓↓↓↓↓↓
這個交互的核心就在這個代理方法里面了。
當scrollview的偏移量大于等于需要加載的topview的高+過度畫面+一定的偏移量的時候。切換到下個詳情界面,也就是bottomview,此時記得設置第一個scrollview禁止滑動;
在第二個scrollview的時候,當偏移量小于等于過度畫面+一定的偏移量的時候切換到第一個scrollview。(注意,此時的偏移量并不是小于第一個scrollview的判斷值了,應為現(xiàn)在在第二個scrollview上,偏移量是重新計算的)動畫完成后記得設置第一個scrollview的使能為yes!
ok,到這里這個封裝就算完成了~!當需要用到它時,只需要在控制器里實例化,然后設置兩個view就可以了~!這樣↓↓↓↓↓↓↓↓↓↓
代碼已上傳到github。點這里
我是Logan~!我的心愿是代碼永無bug!