我有一个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];
}
答案 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单元格,只需将子视图缩小到您想要的任何帧,并使单元格背景清晰等。