美文网首页
滑动tableview 确定cell在view的位置

滑动tableview 确定cell在view的位置

作者: 馒头压扁就是饼 | 来源:发表于2021-03-30 14:32 被阅读0次

    //当tableView的cell数量改变后再次reload,contentOffset的值是通过预估各cell的高度及header、footer的高度后计算得到的,并非准确的值;所以需要关闭它。

    1.    self.tableView.estimatedRowHeight = 0;

        self.tableView.estimatedSectionHeaderHeight = 0;

        self.tableView.estimatedSectionFooterHeight = 0;

    2. -(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath*)indexPath{

        //点击cell获取屏幕坐标

        CGRectrectInTableView = [tableViewrectForRowAtIndexPath:indexPath];

        CGRectrect = [tableViewconvertRect:rectInTableViewtoView:[tableViewsuperview]];

        NSLog(@"%f%f",rect.origin.x,rect.origin.y);

        NSString*selectRowStr = [NSStringstringWithFormat:@"%ld",indexPath.row];

        NSLog(@"选择了第%@行",selectRowStr);

        if(_selectRowAry.count!=0) {

            NSString* row = [_selectRowAry objectAtIndex:0]; 

    [_selectRowAry removeAllObjects];

            if([rowisEqualToString:selectRowStr]) {

                self.detailsView.hidden=YES;

            }else{

                [_selectRowAryaddObject:selectRowStr];

                self.detailsView.hidden=NO;

                 CGFloatheigth = (rect.origin.y-27+DETAILSHEIGHT) - (self.view.bounds.size.height-55);

                if(heigth >0) {

                      self.detailsView.frame=CGRectMake(ScreenWidth-DETAILSWIDTH-92, indexPath.row*55-heigth,DETAILSWIDTH,DETAILSHEIGHT);

                }else{

                      self.detailsView.frame = CGRectMake(ScreenWidth-DETAILSWIDTH-92, indexPath.row *55+27, DETAILSWIDTH, DETAILSHEIGHT);

                }

            }

        }else{

            [_selectRowAryaddObject:selectRowStr];

                       self.detailsView.hidden=NO;

            CGFloatheigth = (rect.origin.y-27+DETAILSHEIGHT) - (self.view.bounds.size.height-55);

            if(heigth >0) {

                  self.detailsView.frame=CGRectMake(ScreenWidth-DETAILSWIDTH-92, indexPath.row*55-heigth,DETAILSWIDTH,DETAILSHEIGHT);

            }else{

                  self.detailsView.frame = CGRectMake(ScreenWidth-DETAILSWIDTH-92, indexPath.row *55+27, DETAILSWIDTH, DETAILSHEIGHT);

            }

        }

    }

    相关文章

      网友评论

          本文标题:滑动tableview 确定cell在view的位置

          本文链接:https://www.haomeiwen.com/subject/asqghltx.html