項目需求就是上面是webView.下面是tableView,然后下拉到webView消失就正常顯示為tableView.可下拉刷新.拉到一定值的時候.讓其滾動到webView最頂層.
下拉到webView完全消失.就讓切換的View成為titleView.
此時正常為tableView的使用,當(dāng)下拉到一定層度的時候.讓組頭還原,并且webView置頂.
整體思路:
1.一個tableview.讓webView作為headView.
2.讓切換排行榜和最新上傳的view作為組頭
3.下面只有一個tableViewCell,里面是一個collectionView.
4.collectionView里面有兩個cell,并且每一個cell里面對應(yīng)兩個控制器的view,
5.然后切換按鈕,聯(lián)動偏移collectionView,
(下面把最外層的tableView叫做大tableView,另外兩個叫小tableView)
有一個地方需要注意:
下面嵌入的是tableview.當(dāng)整個tableView下拉到webView消失的時候,下拉只是刷新的效果.并不會回到webView的頂部.
需求就是拉到100以下.就是刷新,100以上就是置頂?shù)絯ebView,(這個100根據(jù)你們項目需求,我個人測試過.100還不錯)
在兩個小 talView的控制器里面的scrollView代理方法中做回調(diào).
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"===>%f",scrollView.contentOffset.y); if (scrollView.contentOffset.y <= -100) { //回調(diào)偏移 if (_topBlock != nil) { _topBlock(); } } }
在大的tabView的控制器實現(xiàn).collectionView的代理方法:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { //自定義cell. UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:TableViewID forIndexPath:indexPath]; if (indexPath.item == 0) { //創(chuàng)建一個主頁子控制器. [cell.contentView addSubview:self.childListVC.view]; }else { [cell.contentView addSubview:self.childUploadVC.view]; } return cell; }
回調(diào)實現(xiàn):
_childListVC.topBlock = ^{ [weakSelf didTopButton]; };
大的tableView置頂
-(void)didTopButton { [_tableView setContentOffset:CGPointMake(0, 0) animated:YES]; }
在大的tableView里面的ScrollViewDelegate代理方法切換titleView.
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { if ([scrollView isKindOfClass:[UICollectionView class]]) { if (scrollView.contentOffset.x > screen_width * 0.5) { _newLoadBtn.selected = YES; _listBtn.selected = NO; [UIView animateWithDuration:0.5 animations:^{ self.slidingView.transform = CGAffineTransformMakeTranslation(screen_width*0.5 -60, 0); }]; }else{ _listBtn.selected = YES; _newLoadBtn.selected = NO; [UIView animateWithDuration:0.5 animations:^{ self.slidingView.transform = CGAffineTransformIdentity; }]; } }else if([scrollView isKindOfClass:[UITableView class]]) { if (scrollView.contentOffset.y >= _headerView.height) { //那么就讓其title更改. if (_isTableTitleView == NO) { self.sectionBackView.frame = CGRectMake(0, 0, screen_width - 120, 30); self.navigationItem.titleView = self.sectionBackView;//更改titleView _isTableTitleView = YES; } }else{ if (_isTableTitleView == YES) { self.navigationItem.titleView = self.titleLableView;//還原為文字的View. self.sectionBackView.frame = CGRectMake(60, 15, screen_width - 120, 30); [self.sectionView addSubview:self.sectionBackView]; _isTableTitleView = NO; } } } }
注意:title的切換.最好都用titleView.如果一個是title.一個是titleView.不方便切換.我反正沒有搞成功,你們可以試試.
github賬號忘記了.申請了一個新的.需要demo的可以留言郵箱.我發(fā)盡快發(fā)過去.
注:只為成長記錄:希望能得到您們的寶貴意見.