先上效果图

github地址
https://github.com/kingundertree/XZPageViewController
说明
见过一些类似的设计,但是很多都是采用UIScrollView,add viewController,然后自己监控UIScrollView的变化值实现导航和viewController的通讯,甚至有采用UITableView横过来的方式实现,深不以为然。一方面是实现成本大,操作麻烦,再就是viewController的生命周期需要单独控制等。
更推崇系统提供的UIPageViewController方法,这个方法本来是方便实现类似读书软件的翻页效果。
功能
- 支持左右滑动快速切换viewController
- 支持viewController和导航的相互控制
- 支持viewController的切换效果和循环滚动
实现机制
- 基于UIPageViewController以及其UIPageViewControllerDataSource,UIPageViewControllerDelegate
- 通过UIPageViewControllerDataSource 为 UIPageViewController 添加 viewControllerBeforeViewController 或 viewControllerAfterViewController ,实现视图的切换
- 通过UIPageViewControllerDelegate,通知实现导航效果切换
- 通过setViewControllers,实现点击导航切换viewcontrollers
使用方法
目前,所有功能都已经集成到XZPageViewController中,只继承XZPageViewController,然后实现XZPageViewControllerDataSource,XZPageViewControllerDelegate。
XZPageViewControllerDataSource
1.设置导航数量
- (float)numOfPages;
2.设置导航宽度
- (float)witdhOfNav;
3.导航标题
- (NSString *)titleOfNavAtIndex:(NSInteger)index;
4.设置viewController
- (UIViewController *)viewPageController:(XZPageViewController *)pageViewController contentViewControllerForNavAtIndex:(NSInteger)index;
5.是否循环
- (BOOL)canPageViewControllerRecycle;
6.导航切换,viewcontroller是否动画展示
- (BOOL)canPageViewControllerAnimation;
XZPageViewControllerDelegate
1.viewController切换成功事件
-(UIViewController *)viewPageController:(XZPageViewController *)pageViewController pageViewControllerChangedAtIndex:(NSInteger)index;