這一篇文章講解如何實現(xiàn)一個分頁控制器,效果圖如下:
這是我參考別人的思路(忘記是哪個了)實現(xiàn)的一個框架,使用起來非常簡單。
使用:
_pageView = [[BBScrollPageView alloc] initWithFrame:pageViewRect segmentStyle:scrollTitleViewStyle titles:_dataArr childVcs:_childVcs parentViewController:self delegate:self];
[_pageView generate]
;
或者
_pageView = [[BBScrollPageView alloc] initWithFrame:pageViewRect style:scrollTitleViewStyle];
[_pageView setTiltes:_dataArr childVcs:_childVcs parentViewController:self delegate:self];
[_pageView generate];
即創(chuàng)建傳入標題數(shù)組和控制器數(shù)組即可,無需考慮均分問題。
實現(xiàn)思路
BBPageScrollView分為三個部分,一是上面的頭部,二是下面頁面內容部分,三是總體視圖(包含上面頭部和下面頁面內容)
上面頭部我這里使用的是視圖上加了一個可以滾動的scrollView,上面的文字則是自定義的label,它的文字大小跟偏移量有關,label自身點擊事件以代理的方式通知pageScrollView,在pageSrollView里內容頁面的切換;
頁面內容我用的也是一個可以滾動的scrollView,其contentSize的寬度為子控制器的個數(shù) * 自身寬度,當滾動時,其偏移量發(fā)生變化,將每個子控制器的視圖加到scrollView上,視圖x值則是視圖所在數(shù)組的索引 * scrollView.frame.size.width。scrollView的滑動以代理的方式通知pageScrollView,在pageSrollView里更新上面頭部的切換
總體視圖pageScrollView負責上面二者的交互。
框架結構如下: