XZPageViewController 类似搜狐新闻切换效果

先上效果图

Mou icon

github地址

https://github.com/kingundertree/XZPageViewController

说明

见过一些类似的设计,但是很多都是采用UIScrollView,add viewController,然后自己监控UIScrollView的变化值实现导航和viewController的通讯,甚至有采用UITableView横过来的方式实现,深不以为然。一方面是实现成本大,操作麻烦,再就是viewController的生命周期需要单独控制等。

更推崇系统提供的UIPageViewController方法,这个方法本来是方便实现类似读书软件的翻页效果。

功能

  1. 支持左右滑动快速切换viewController
  2. 支持viewController和导航的相互控制
  3. 支持viewController的切换效果和循环滚动

实现机制

  1. 基于UIPageViewController以及其UIPageViewControllerDataSource,UIPageViewControllerDelegate
  2. 通过UIPageViewControllerDataSource 为 UIPageViewController 添加 viewControllerBeforeViewController 或 viewControllerAfterViewController ,实现视图的切换
  3. 通过UIPageViewControllerDelegate,通知实现导航效果切换
  4. 通过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;