翻页效果

来源:互联网 发布:体感游戏机的价格淘宝 编辑:程序博客网 时间:2024/06/12 01:14

在总的控制器中的大表中加载表头和表尾,大表中的表头又是一个小表,又装有表头和一个单元格,表头是一个轮播器,单元格是一个加载的nib。大表中的表尾也是一个小表,这个小表有一个单元格,这个单元格中有一个scrollview,scrollview中装有三个表,分别是图文详情、产品参数、店铺推荐。

用偏移量写的话,如果换成6p或者6的时候因为屏幕变大,表的偏移量会变小,随着屏幕的大小改变,偏移量是找不到固定的值的,这样很难控制,达不到所要的效果
今天想的一个新思路:
--》(解决办法):大表套两个小表,这两个小表分别做大表的表头和表尾,然后根据两个小表的偏移量控制大表的偏移量。简单来说,就是 在大表中的表头中设置两个参数BOOL类型的isScroll来表示是否已经滑动和CGFloat类型的offset来表示偏移量,然后表有一个方法:- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;即表中的单元格将要展示的时候调用。想知道最后一个cell显示的时候的,表的偏移量是多少,这样我就可以知道使表的偏移量大于这个值,然后将表尾显示出来。根据最后一个单元格展示来确定当前表的偏移量。//根据最后一个单元格展示来确定当前表的偏移量
    if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
        //将这个偏移量多出100,使其不至于滑到最后一个单元格就展示商品详情表
        offset = self.headTableView.contentOffset.y + 100;
        //将是否能够展示商品详情表变为真
        isScroll = YES;}
然后再在方法- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate中,可以展示的时候再判断当前表的偏移量是否大于 self.headTableView.contentOffset.y + 100。具体写法:   if (isScroll) {
        if (self.headTableView.contentOffset.y > offset) {
            //当是的时候执行块
            self.changeOffestBlock();
        }
    }
而这个块当然要在详情总的控制器中写,用方法setContentOffset让它的偏移量CGPointMake(0, kMainViewSize.height)。
然后在表尾的这个视图中,也要有偏移量的块,同样的,在方法- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate中,写个块  
if (self.footTableView.contentOffset.y < -0.5) {
        self.chanegContentOffset();
    }
而这个块当然要在详情总的控制器中写,用方法setContentOffset让它的偏移量CGPointMake(0, 0)

0 0
原创粉丝点击