如何动态更改最后一个单元格的UITableViewCell大小

时间:2013-05-03 21:35:52

标签: iphone objective-c xcode

我有一个UITableView,里面有16-20个单元格,动态单元格大小。当一个单元格自我展开时,它也应该自己移动到屏幕的顶部。我使用“UITableView setContentOffset”方法做到了这一点。除了表格中的最后一个单元格之外,它的效果很好,它无法移动到顶部。

我尝试改变框架& UITableView的内容大小,但这些都不适合我!

任何想法?

[UPDATE] 这是代码的一部分:(它在UITableViewCell中,因此self指向当前单元格)

HomeViewController *tempViewController = (HomeViewController *) delegate;
UIView *commentField;

/*Skipping lines of codes manipulating commentField */

//Adding a subview to current cell which needs more space
[self addSubview:commentField]; 

//Expanding cellSize to EXPANDED_CELL_HEIGHT
//ViewController has access to cell size property and using that to determine each cell size. 
[self setCellSize:(EXPANDED_CELL_HEIGHT)]; 

//Reloading UITableView to reflect the cell size change with animation
[[tempViewController tableView] beginUpdates];
[[tempViewController tableView] endUpdates];

[[tempViewController tableView] setContentOffset:CGPointMake(0, self.frame.origin.y) animated:YES];    

并且在我的视图控制器中(正如我之前所说)我正在获取cellSize格式单元格

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [(BaseTableViewCell *)[cellContainer objectAtIndex:indexPath.row] cellSize];
}

1 个答案:

答案 0 :(得分:3)

您可以使用tableview委托方法heightForRowAtIndexPath:更改单元格的高度当indexPath.row等于您的最后一行时,返回您想要的高度。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == i)//i being whatever row index you want to change
    {
      return 60.0;//or float size you want
    }
    else
    {
     return 30.0;
    }
}

或者您可以修改willDisplayCell:内单元格的边界。如果您使用自定义的tableview单元格,只需将子视图缩小到您想要的任何帧,并使单元格背景清晰等。