分页控制器的实现

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

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

Paste_Image.png

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

实现思路


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

Paste_Image.png

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

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

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

框架结构如下:

Paste_Image.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,556评论 1 14
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 和谐相处不容易。 儿子毕业回家,欢迎的背后是说不出的滋味。两代人的思想越来越难以统一,生活习惯太不相同,真不像一家...
    周湘泉阅读 209评论 4 4
  • 马兰: 见字如面。 丫头,这是我写给你的第一封信。 值得一提的是,我今年27岁,而我准备写这封信却已经有无数个日夜...
    孤邻阅读 594评论 0 0
  • 最近组内先后招了两名开发,作为他们的mentor,一方面我在观察他们的工作方式和编码习惯,另一方面也在对比思考自己...
    海之方阅读 1,443评论 14 29