分页菜单SPPageMenu使用说明书

SPPageMenugithub地址:https://github.com/SPStore/SPPageMenu

一、cocopods导入

platform:ios,'8.0'
target 'MyApp' do
  pod 'SPPageMenu', '~> 3.5.0'
end

二、 效果演示图

(演示图中仅展示了部分功能,更多功能请进入github下载源代码,如果您的网络较慢,gif图可能会延迟加载,您可以先把宝贵的时间浏览其它信息)

Untitled.gif

三、 重难点方法和属性详解

// 这个方法用于传递数据,items里面可以是NSString、UIImage 或SPPageMenuButtonItem类型,每个item会根据传的元素类型自动展示你要的内容;selectedItemIndex是选中的item下标,selectedItemIndex不可超过 items的范围
- (void)setItems:(nullable NSArray *)items selectedItemIndex:(NSUInteger)selectedItemIndex;
A46F678B-C330-4971-993B-C2AA048C98A6.jpeg
//  这个属性命名为“桥梁scrollView”,当外界的scrollView在左右切换的时候,需要让跟踪器时刻跟随该scrollView滚动,bridgeScrollView就是外界左右切换的scrollView。只要bridgeScrollView有值了,SPPageMenu会监听bridgeScrollView的滚动状态,从而让跟踪器有跟随效果。如果你忘了设置这个属性或者觉得不好,你还可以在scrollViewDidScroll的代理方法中,调用SPPageMenu的接口“- (void)moveTrackerFollowScrollView:(UIScrollView *)scrollView”。
@property (nonatomic, strong) UIScrollView *bridgeScrollView;
// 排列方式:支持3种排列方式;1、可滑动,按钮宽度根据内容自适应;2、不可滑动,按钮等宽;3、不可滑动,按钮宽度根据内容自适应。3种排列方式都有非常高的使用频率。第1种排列方式:SPPageMene的容量会根据按钮个数而定;第2种和第3种排列方式:SPPageMenu的容量固定为SPPageMenu的宽度
@property (nonatomic, assign) SPPageMenuPermutationWay permutationWay; 
  • 排列方式一:SPPageMenuPermutationWayScrollAdaptContent


    5ADC4C3A2C55E428CB93E627108AD19B.jpg
  • 排列方式二:SPPageMenuPermutationWayNotScrollEqualWidths


    795A7E94AB1D002B026A7EB346599CE5.jpg
  • 排列方式三:SPPageMenuPermutationWayNotScrollAdaptContent


    C3EEA99CD066F43DD5CCAEBCBD0D8C76.jpg
// 跟踪器跟踪模式;这个属性从3.4版本开始闪亮登场。该属性是个枚举,共3个:1、SPPageMenuTrackerFollowingModeAlways,这个枚举值的意思是让跟踪器时刻跟随外界scrollView(即bridgeScrollView)横向移动; 2、SPPageMenuTrackerFollowingModeEnd,这个枚举的意思是当外界scrollView滑动结束时,跟踪器才开始移动;相当于3.4版本之前的closeTrackerFollowingMode属性 3、SPPageMenuTrackerFollowingModeHalf,这个枚举的意思是当外界scrollView拖动距离超过屏幕一半时,跟踪器开始移动。
@property (nonatomic, assign) SPPageMenuTrackerFollowingMode trackerFollowingMode;

请大家仔细观察跟踪器(按钮下面的下划线)开始移动的时刻

  • 跟踪模式一:SPPageMenuTrackerFollowingModeAlways


    always.gif
  • 跟踪模式二:SPPageMenuTrackerFollowingModeEnd


    end.gif
  • 跟踪模式三:SPPageMenuTrackerFollowingModeHalf


    half.gif
//  这个属性是设置内容的四周边距,例如如果你想让跟踪器距离底部分割线有一段距离,你就可以设置contentInset的底部间距,这里指的内容是不包括底部分割线的。
@property (nonatomic, assign) UIEdgeInsets contentInset;

下面截图是设置pageMenu.contentInset = UIEdgeInsetsMake(0, 50, 0, 50)的结果,绿色为SPPageMenu的背景色,黄色部分是内容

1391991C798B9E6DA6345401EE03A227.jpg

// // 设置指定item的四周内边距,这和上面那个属性不一样,上面的属性contentInset作用对象是SPPageMenu整个控件,而这个方式作用对象是SPPageMenu里的一个按钮
- (void)setContentEdgeInsets:(UIEdgeInsets)contentEdgeInsets forItemAtIndex:(NSUInteger)itemIndex;
//  这个方法在描述bridgeScrollView的时候有提到过,在外界的scrollViewDidScroll代理方法中调用,可以让跟踪器时刻跟随scrollView滑动,如果bridgeScrollView已经赋过值,那这个方法就没必要去调用了。
- (void)moveTrackerFollowScrollView:(UIScrollView *)scrollView;
以上介绍的属性和方法只是部分的,其余属性和方法相对简单,框架中也有非常详细的注释,这里就不再多做介绍

四、 适用场景

网易新闻

A7FD723F-E458-437A-AD3F-D990C8F49C26.jpeg

爱奇艺

09145AB7-9FA8-4442-8E66-28A5D02EB4A6.jpeg

微博

8D4F4543-97C8-43AB-A6ED-152ACC35429D.jpeg

淘宝

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,110评论 25 709
  • 经过时间的焠炼,很怕当我们老去时,彼此陷入相守不相知,无话可说的境地。
    赳赳嘚小象阅读 93评论 0 0
  • 其实只要为按钮自定义一个类,重写下面的几个方法即可,具体要调到什么位置都可以自己在返回CGRectMake中调整,...
    不疯魔难以成佛阅读 642评论 0 0
  • 迷迷糊糊的背了一天,还好吧这感觉。 果然有的事注定是你的就一定逃不掉,比如看见柳方舟那可真真是三次啊!比如看群里的...
    大象大象你别躲阅读 204评论 0 0
  • 朝九晚五的生活是职场里的人所向往的,然而当自己朝九晚五的时候,我只有一个感觉,那就是,好累啊。 我每天去培训的动力...
    小小霸王君阅读 283评论 0 0