分页控制器的实现

这一篇文章讲解如何实现一个分页控制器,效果图如下:

BBPageScrollView.gif

这是我参考别人的思路(忘记是哪个了)实现的一个框架,使用起来非常简单。

使用:


_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];

分页控制器的实现_第1张图片
Paste_Image.png

即创建传入标题数组和控制器数组即可,无需考虑均分问题。

实现思路


BBPageScrollView分为三个部分,一是上面的头部,二是下面页面内容部分,三是总体视图(包含上面头部和下面页面内容)

分页控制器的实现_第2张图片
Paste_Image.png

上面头部我这里使用的是视图上加了一个可以滚动的scrollView,上面的文字则是自定义的label,它的文字大小跟偏移量有关,label自身点击事件以代理的方式通知pageScrollView,在pageSrollView里内容页面的切换;

页面内容我用的也是一个可以滚动的scrollView,其contentSize的宽度为子控制器的个数 * 自身宽度,当滚动时,其偏移量发生变化,将每个子控制器的视图加到scrollView上,视图x值则是视图所在数组的索引 * scrollView.frame.size.width。scrollView的滑动以代理的方式通知pageScrollView,在pageSrollView里更新上面头部的切换

总体视图pageScrollView负责上面二者的交互。

框架结构如下:

分页控制器的实现_第3张图片
Paste_Image.png

demo地址:https://github.com/BohrForIOS/BBScrollPageView

你可能感兴趣的:(分页控制器的实现)