在程序运行中调整UITableViewCell高度
最近要实现下面的效果,就是在UITableView中有很多行数据,当用户选择某一行之后,将该行高度调整为原来2倍,其它行高度不变,改行后面的行往后顺移.
这个问题困扰了很久,想过调整UITableViewCell的frame,或则调整height,或则调整origin.y,在之间插入新视图,但发现如果选择最后几行中某一行,倒数一两行不能被选中,后来又给UITableView添加手势,但由于UITableView的重用机制,滚动后会重新调整尺寸,后来的效果不尽理想.
好事多磨,想来想去,终于找到了解决方案,就是增加一个数组,
?
BOOL?bCheck[20]; (也可以是NSArray,里面添加NSNumber成员,记录cell高度,这里简单用bool数组)
记录每个cell的高度,
?
然后在:
?
?
- (CGFloat)tableView:(UITableView?*)tableView heightForRowAtIndexPath:(NSIndexPath?*)indexPath{
?
? ??if?(bCheck[indexPath.row]) {
?
? ? ? ??return?100;
? ? }else{
?
? ? ? ??return?50;
? ? }
}
?
最后处理选择操作:
?
?
- (void)tableView:(UITableView?*)tableView didSelectRowAtIndexPath:(NSIndexPath?*)indexPath
{
?
? ??bCheck[indexPath.row] =?YES;
?
? ? [tableView?reloadData];
?
}