滚动uitableview时更改特定uitableview单元格行高

滚动uitableview时更改特定uitableview单元格行高,uitableview,dynamic,row-height,Uitableview,Dynamic,Row Height,我有一个UITableview,有两个部分,第一部分有一行,第二部分有可变数量的行。当用户向上滚动表格(手指向上移动)时,tableview会执行默认操作,但当用户位于uitableview顶部并向下滚动(手指向下移动)时,第一部分中的第一个单元格的高度应与用户向下滚动时的高度一样增加(松开触摸键会将行的高度更改回原来的高度100) -(void)scrollViewDidScroll:(UIScrollView*)scrollView{ if(scrollView.contentOff

我有一个UITableview,有两个部分,第一部分有一行,第二部分有可变数量的行。当用户向上滚动表格(手指向上移动)时,tableview会执行默认操作,但当用户位于uitableview顶部并向下滚动(手指向下移动)时,第一部分中的第一个单元格的高度应与用户向下滚动时的高度一样增加(松开触摸键会将行的高度更改回原来的高度100)

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{
    if(scrollView.contentOffset.y < 0){
        [mainTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection: 0]] withRowAnimation:UITableViewRowAnimationNone];
    }
}

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{
    if(indexPath.section == 0 && tableView.contentOffset.y < 0){
        return -tableView.contentOffset.y+100;//Default height is 100
    }
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
if(scrollView.contentOffset.y<0){
[mainTable ReloadRowsAndExpaths:[NSArray arrayWithObject:[NSIndepath indexPathForRow:0第1部分:0]]withRowAnimation:UITableViewRowAnimationNone];
}
}
-(CGFloat)tableView:(UITableView*)表视图行高度索引路径:(NSIndexPath*)索引路径{
if(indexath.section==0&&tableView.contentOffset.y<0){
return-tableView.contentOffset.y+100;//默认高度为100
}
}
但是reloadRows方法将contentOffset重置为0,因此当我下拉时,tableview会结巴。如果这不起作用,那么我将不得不在UIScrollView上写入所有内容,如果没有可回收的单元格,这将是一个巨大的痛苦


有人有什么建议吗?

无需重新加载行,我只是直接更改了帧。请确保设置cell.layer.masksToBounds=YES,并使单元格中的子视图大于原始单元格高度

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if (mainTable.contentOffset.y < 0) {
        UITableViewCell *cell = [mainTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
        float rawr = mainTable.contentOffset.y;
        cell.frame = CGRectMake(cell.frame.origin.x, rawr, cell.frame.size.width, 100-rawr);
    }
}
-(无效)scrollViewDidScroll:(UIScrollView*)scrollView{
if(mainTable.contentOffset.y<0){
UITableViewCell*cell=[mainTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0第0节:0]];
float rawr=mainTable.contentOffset.y;
cell.frame=CGRectMake(cell.frame.origin.x,rawr,cell.frame.size.width,100 rawr);
}
}