最近工作中用到了这个三方控件,发现github上给的Demo中有点繁琐,记录一下使用心得。废话少说先看图:
我们使用过程中,并没有使用headView,界面比较简洁。我们这里使用了TYSlidePageScrollView来实现的方法,也就是github上的Demo中CustomView2Controller.h中使用的方法,并没有用TYSlidePageScrollViewController来实现,下面记录一下使用方法:
1.肯定是初始化:
#import "TYSlidePageScrollView.h"
#import "TYTitlePageTab.h" // 添加头文件,不多说了
@property (strong,nonatomic) TYSlidePageScrollView *slidePage; //声明了一个全局的,方便使用
@property (nonatomic,strong) TYTitlePageTab *titleBar; //对应的titleBar就是群、讨论组、协作组
//添加slidePage viewDidload里面
_slidePage = [[TYSlidePageScrollView alloc]initWithFrame:self.view.bounds];
_slidePage.pageTabBarIsStopOnTop = YES;
_slidePage.pageTabBarStopOnTopHeight = 0;
_slidePage.pageTabBarIsStopOnTop = 0;
_slidePage.dataSource = self;
_slidePage.delegate = self;
[self.view addSubview:_slidePage];
这几个属性设置根据你自己的需求定吧,也没什么难得。
//添加titleBar
self.titleBar = [[TYTitlePageTab alloc] initWithTitleArray:@[@"群", @"讨论组", @"协作组"] numArray:@[@"0",@"1",@"2"]];
self.titleBar.frame = CGRectMake(0, 0, ScreenWidth, 45);
_titleBar.contentSize = CGSizeMake(ScreenWidth,40); //可以设置成大于屏幕
_titleBar.bounces = YES;
_titleBar.showsHorizontalScrollIndicator = NO;
_titleBar.backgroundColor = [UIColor whiteColor];
_titleBar.layer.borderColor = [UIColor lightGrayColor].CGColor;
_titleBar.layer.borderWidth = 0.5;
_slidePage.pageTabBar = _titleBar;
这个titleBar总之设置好把它加到_slidePage上面就OK了,这里说明一下,contentSize的使用,比如你想设置4个分栏,然后每个分栏是3分之一的屏幕那么宽,那么你把contentSize设置宽度为ScreenWidth+ScreenWidth/3就可以了。
一般在你数据请求回来之后,你再[_slidePage reloadData];一下,就是刷新一下页面。
2.TYSlidePageScrollView的代理方法:
这玩意和tableview类似,熟悉了它的代理方法就知道该怎么使用它了。当reloadData的时候就会按照生命周期来一次调用它的代理方法,下面说一下重点几个代理方法的作用:
//返回总共有几个分栏,这个so easy理解
- (NSInteger)numberOfPageViewOnSlidePageScrollView
{
return 3;
}
//返回每个分栏底下的ScrollView的方法
- (UIScrollView *)slidePageScrollView:(TYSlidePageScrollView *)slidePageScrollView pageVerticalScrollViewForIndex:(NSInteger)index
{
return self.tableView;
}
这个方法和Demo中的使用有点不一样,解释一下Demo中的思路:比如有3个分栏,它是在初始化的时候创建了3个自定义controller(自己写了个TableViewController,继承自UITableViewController),并且加到当前controller也就是self的孩子VC中:[self addChildViewController:tableViewVC];然后在上面这个代理方法中返回了:
TableViewController *tableViewVC = self.childViewControllers[index];
return tableViewVC.tableView;
相当于把TableViewController中的tableview拿出来,return了,我觉得有点繁琐。其实这三方控件就想让你返回一个scrollView的子类,你随便自己定义一个scrollView的子类对象返回就行了,没必要非得再弄个controller出来。MVC的开发架构下,弄好几个controller不好看,逻辑不太清楚。
小结:基本上这个控件的简单实用就这样了,至于第二个代理方法返回的tableview也好,scrollView也好,再怎么用,有自己的代理,自己看着办怎么写吧。如果你需要添加HeadView这玩意,就像github的Demo中的,也很简单,在初始化的时候设置一下就行了。
- (void)addHeaderView
{
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(_slidePageScrollView.frame), 200)];
imageView.image = [UIImage imageNamed:@"CYLoLi"];
imageView.contentMode = UIViewContentModeScaleAspectFill;
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 75, 100, 30)];
label.textColor = [UIColor orangeColor];
label.text = @"headerView";
[imageView addSubview:label];
_slidePageScrollView.headerView = imageView;
}/*Demo中的方法,关键你的imageView加到_slidePageScrollView.headerView上就好了*/