iOS scrollView中嵌套多个tabeleView处理方案 (2)

上面这段代码主要就怎么给scrollView添加子视图 如果设置子视图的位置和headerView的位置

#import "TYTableView1.h" @interface TYTableView1 ()<UITableViewDelegate,UITableViewDataSource> @property (nonatomic, assign) CGPoint lastContentOffset; @end @implementation TYTableView1 -(void)setHeaderView:(TYHeaderView *)headerView{ _headerView = headerView; self.dataSource = self; self.delegate = self; self.scrollIndicatorInsets = UIEdgeInsetsMake(headerView.height, 0, 0, 0); UIView *tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.headerView.height)]; self.tableHeaderView = tableHeaderView; [self reloadData]; } #pragma mark - ScrollViewDelegate -(void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat placeHolderHeight = self.headerView.height - 44; CGFloat offsetY = scrollView.contentOffset.y; if (offsetY >= 0 && offsetY <= placeHolderHeight) { if (offsetY > self.lastContentOffset.y) { //往上滑动 if (offsetY>(-self.headerView.y)) { self.headerView.y = -offsetY; } }else { //往下滑动 if (offsetY<(-self.headerView.y)) { self.headerView.y = -offsetY; } } } else if (offsetY > placeHolderHeight) { if (self.headerView.y != (-placeHolderHeight)) { if (offsetY > self.lastContentOffset.y) { //往上滑动 self.headerView.y = self.headerView.y - (scrollView.contentOffset.y-self.lastContentOffset.y); } if (self.headerView.y < (-placeHolderHeight)) { self.headerView.y = -placeHolderHeight; } if (self.headerView.y>=0) { self.headerView.y = 0; } } } else if (offsetY <0) { self.headerView.y = - offsetY; } // if (offsetY>50) { // self.headerView.navView.transparency = 1; // }else // { // self.headerView.navView.transparency = 0; // } self.lastContentOffset = scrollView.contentOffset; } #pragma mark - UITableViewDelegate && UITableViewDataSource -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return 20; } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; } cell.textLabel.text = @"测试数据"; return cell; }

这一段主要是目的就是如果setHederView,并且设置一个同header同样宽高的tableViewHeaderView,并且监听tableView的滚动,保证headerView的滚动和tableHeaderView同步,第一个tableView的设置是这样的,第二个,第三个tableView的设置也是一样的,这里就不在多说了,这里还有一个注意点,就是当header滚动要一定程度了之后需要控制headerView的最大滚动区域,这样才可以保障tab始终悬浮在tableView的最顶部。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysyzs.html