OC版本年久失修,Swift请选择EasyKits下的EasySegmentedView和EasyPagingContainerView
manage your controllers or views
- 快速集成顶部菜单栏
- 拆分为MLMSegementHead和MLMSegmenScroll,分别设置,使用更灵活
- 使用NSCache统计页面加载
- 单独创建自己的ViewController,低耦合,具体操作在自己的ViewController中实现
- 直接创建UIView添加到视图中
- 根据需求选择不同的样式,具体效果可以自己定制
- 设置初次进入显示的页面,
- 设置初次进入加载的页面数目,和滑动过程中页面中保留的页面数目
MLMSegmentScroll
//添加子视图的时机
typedef enum : NSUInteger {
SegmentAddNormal,//滑动或者动画结束
SegmentAddScale//根据设置滑动百分比添加0-1
} SegmentAddTiming;
///SegmentAddScale 时使用 0-1
@property (nonatomic, assign) CGFloat addScale;
MLMSegmentHead
//风格
typedef enum : NSUInteger {
/**
* 默认
*/
SegmentHeadStyleDefault,
/**
* line(下划线)
*/
SegmentHeadStyleLine,
/**
* arrow(箭头)
*/
SegmentHeadStyleArrow,
/**
* Slide(滑块)
*/
SegmentHeadStyleSlide
} MLMSegmentHeadStyle;
//布局样式
typedef enum : NSUInteger {
/*
* 默认均分,根据maxTitles计算宽度,均分
*/
MLMSegmentLayoutDefault,
/*
* 居中(标题不足一屏时选择样式,反之设置后按照居左)
*/
MLMSegmentLayoutCenter,
/*
* 居左
*/
MLMSegmentLayoutLeft
} MLMSegmentLayoutStyle;
将 MLMSegmentPageView 拖入Xcode工程中
将 MLMSegmentManager.h 加入工程中,执行代码
- 基础设置
MLMSegmentHead *segHead = [[MLMSegmentHead alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, 40) titles:list headStyle:_style layoutStyle:_layout];
MLMSegmentScroll *segScroll = [[MLMSegmentScroll alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(_segHead.frame), SCREEN_WIDTH, SCREEN_HEIGHT-CGRectGetMaxY(_segHead.frame)) vcOrViews:[self vcArr:list.count]];
[MLMSegmentManager associateHead:segHead withScroll:segScroll completion:^{
[self.view addSubview:segHead];
[self.view addSubview:segScroll];
}];
- 默认设置为第一次进入只加载当前显示的页面,即 segScroll.loadAll = NO;
- 默认滑动过程中最大缓存页面是所有页面,即 segScroll.countLimit = vcsOrviews.count;即segScroll.loadAll =
- 具体设置,参照代码
- 注意,创建MLMSegmentHead和MLMSegmentScroll,并使用MLMSegmentManager绑定两个View,在block中设置addSubView:操作
- 添加自定义button的类,用于更复杂的头部菜单
- 添加moreButton,用于添加,删除头部菜单的数据源
- 如果您在使用过程中发现任何bug或者有好的改动建议,希望您可以issue我或者发邮件到920459250@qq.com反馈给我