先看效果图
每点击一个整个scrollView就会滑动到相应的位置,出现相应的tableView,然后用鼠标滑动scrollView时,上面的控制器也会跟着变化
- taleView在ScrollView上布局,画布的大小是三个屏幕的大小,在画布上添加三个tableView
- 用分段控制器控制滑动
- 监听scrollview的滑动。分段控制器作出响应
look代码
//初始化scrollView,并设置其属性
_scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
_scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 3, [UIScreen mainScreen].bounds.size.height);
_scrollView.pagingEnabled = YES;
_scrollView.bounces = NO;
_scrollView.bouncesZoom = NO;
_scrollView.alwaysBounceVertical = NO;
_scrollView.alwaysBounceHorizontal = NO;
_scrollView.scrollEnabled = YES;
_scrollView.delegate = self;入代码片
[self.view addSubview:_scrollView];
_tableView1.delegate = self;
_tableView1.dataSource = self;
_tableView2.delegate = self;
_tableView2.dataSource = self;
_tableView3.delegate = self;
_tableView3.dataSource = self;
//初始化tableView,设置其属性
_tableView1 = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 600)];
_tableView2 = [[UITableView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * 1, 0, [UIScreen mainScreen].bounds.size.width, 600)];
_tableView3 = [[UITableView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * 2, 0, [UIScreen mainScreen].bounds.size.width, 600)];
//设置tag值进行区分
_tableView1.tag = 1;
_tableView2.tag = 2;
_tableView3.tag = 3;
[_tableView1 registerClass:[ZWYTableViewCell5 class] forCellReuseIdentifier:@"tab1Cell"];
[_tableView2 registerClass:[ZWYTableViewCell5 class] forCellReuseIdentifier:@"tab2Cell"];
[_tableView3 registerClass:[ZWYTableViewCell5 class] forCellReuseIdentifier:@"tab3Cell"];
[_scrollView addSubview:_tableView1];
[_scrollView addSubview:_tableView2];
[_scrollView addSubview:_tableView3];
_array = @[@"精选文章", @"热门推荐", @"全部文章"];
//初始化分段控制器,设置相应属性
_segment = [[UISegmentedControl alloc] initWithItems:_array];
_segment.frame = CGRectMake(0, 60, self.view.frame.size.width, 40);
//设置标题和边框的颜色
_segment.tintColor = [UIColor whiteColor];
_segment.momentary = NO;
//设置初始选中值,默认为没有选中
_segment.selectedSegmentIndex = 0;
[_segment setBackgroundImage:[UIImage imageNamed:@"essay_background.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
//设置未被选中的状态
[_segment setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]} forState:UIControlStateSelected];
//设置选中的状态
[_segment setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor grayColor]} forState:UIControlStateNormal];
[self.view addSubview:_segment];、
//添加选择点击事件
[_segment addTarget:self action:@selector(roll ) forControlEvents:UIControlEventValueChanged];
//使分段控制器控制滑动
-(void)roll {
switch (_segment.selectedSegmentIndex) {
case 0:
[_scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
break;
case 1:
[_scrollView setContentOffset:CGPointMake(414, 0) animated:YES];
break;
case 2:
[_scrollView setContentOffset:CGPointMake([UIScreen mainScreen].bounds.size.width * 2, 0) animated:YES];
break;
default:
break;
}
}
//监听scrollView的滑动
//这里我用的是属性_scrollView,如果用的是,scrollView,要和tableView进行区别,因为,tableView是scrollView的子类,用tag值进行区分
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if(_scrollView.contentOffset.x == 0) {
_segment.selectedSegmentIndex = 0;
}
if (_scrollView.contentOffset.x == [UIScreen mainScreen].bounds.size.width ) {
_segment.selectedSegmentIndex = 1;
}
if (_scrollView.contentOffset.x == [UIScreen mainScreen].bounds.size.width * 2) {
_segment.selectedSegmentIndex = 2;
}
}
然后就好了!