链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

XLPageViewController-开放且高度可定制的分页视图控制器

XLPageViewController是一个在GitHub上开源的项目,拥有372个星标和71个分支。它是一个分页视图控制器,采用UICollectionView + UIPageViewController方案,具有高性能、低功耗的特点。其默认样式丰富,可自定义标题样式,支持...

访问官网 →

XLPageViewController-开放且高度可定制的分页视图控制器

一、项目简介

XLPageViewController是一个在GitHub上开源的项目,拥有372个星标和71个分支。它是一个分页视图控制器,采用UICollectionView + UIPageViewController方案,具有高性能、低功耗的特点。

二、项目特点

1. 性能与内存管理

其高性能、低功耗,支持刷新并且内置非复用的缓存机制,从而节省内存。

2. 样式方面

默认配置样式丰富,可实现大部分主流App样式,像今日头条、腾讯新闻等App的样式都能实现。同时支持用户自定义标题样式,标题的显示位置(居左、居中、居右)、高度、宽度、文字位置(居上、居下)等都能自定义,还有标题颜色过渡、阴影动画(缩放或无缩放)、末端形状(圆角或直角)、阴影位置(居上或居中)等样式设置。另外,它还兼容全屏返回手势。

三、使用方式

1. 创建方法

首先要导入头文件#import “XLPageViewController.h”,然后遵守协议。创建外观配置类,config负责所有外观配置,defaultConfig方法设定了默认参数,使用时可按需配置。接着创建分页控制器,并将其添加为当前视图控制器的子视图控制器。

2. 协议相关

有XLPageViewControllerDelegate和XLPageViewControllerDataSrouce两个协议。XLPageViewControllerDelegate用于回调切换位置;XLPageViewControllerDataSrouce中的required方法包括根据index创建视图控制器、根据index返回对应的标题、返回分页数,还有可选的标题cell复用方法。

3. 自定义标题cell

要创建一个XLPageTitleCell的子类,注册cell并添加创建cell的方法,同时可以复写cell父类方法来配置标题cell是否被选中样式和动画。

4. 特殊情况处理

当pageViewController的子视图中存在可滚动的子view,例如UISlider、UIScrollView等,如果子view和pageViewController发生滚动冲突时,可设置子view的xl_letMeScrollFirst属性为true。当pageViewController和全屏返回手势一起使用时,需要将其它手势的delegate的类名添加到respondOtherGestureDelegateClassList属性中。

5. 注意事项

使用时需注意标题不要重复,标题是定位ViewController的唯一ID。

四、项目更新

项目一直在更新完善,解决了诸多问题,例如2019/07/29解决快速滑动导致显示错乱问题,2020/04/23解决设置selectedIndex后,代理方法可能不执行问题等。

五、项目总结

XLPageViewController是一个功能强大、高度可定制且不断完善的分页视图控制器。如果你有任何关于这个项目的想法或者使用经验,欢迎在下方留言讨论。

项目地址

GitHub链接直达